Controlar la impresión de intervalos de confianza relacionados con una función de modelo lineal.
Estoy haciendo bootstrapping para un modelo lineal, pero ¿cómo puedo editar los nombres impresos del intercepto y la variable x?
Aquí están los datos simulados:
set.seed(42)
n <- 100
x <- rnorm(n)
e <- rnorm(n)
y <- as.numeric(50 + 25*x + e)
dd <- data.frame(id=1:n, x=x, y=y)
Aquí está el modelo:
mo <- lm(y ~ x, data=dd)
Encuentra el ajuste y los residuos:
fit <- fitted(mo)
resi <- residuals(mo)
Función para obtener intervalos de confianza basados en el bootstrapping de los residuos:
FUN <- function() {
X <- model.matrix(mo)
ressampy <- fit + sample(resi, length(resi), replace = TRUE)
bootmod <- lm(ressampy ~ X-1)
confint(bootmod, level = 0.95)
}
Salida de 1 ejecución (nota que los resultados impresos son X(Intercept)
y Xx
, pero en su lugar solo quiero que sean (Intercept)
y x
):
FUN()
2.5 % 97.5 %
X(Intercept) 49.74439 50.07817
Xx 24.92904 25.25103
Esto puede ser una solución fácil, pero simplemente no pude hacer que funcionara. ¡Cualquier ayuda será muy apreciada!
davy.ai
Para editar los nombres de los valores impresos de la interceptación y la variable x en la salida de la función
FUN()
, puedes modificar la funciónmodel.matrix()
utilizando la funcióncolnames()
para cambiar los nombres de las columnas a los nombres deseados. Aquí te muestro cómo hacerlo:En la función
FUN()
modificada, hemos agregado la líneacolnames(X) <- gsub("X", "", colnames(X))
, que utiliza la funcióngsub()
para reemplazar todas las instancias de “X” en los nombres de las columnas con una cadena vacía, eliminando efectivamente el “X” antes de los nombres de las variables.Con esta modificación, si ejecutas
FUN()
, la salida debería mostrar “(Intercept)” y “x” como se desea: