¿Cómo extrae el valor p (para la importancia del coeficiente de la variable explicativa única que no es cero) y el valor R cuadrado de un modelo de regresión lineal simple? Por ejemplo...
x = cumsum(c(0, runif(100, -1, +1)))
y = cumsum(c(0, runif(100, -1, +1)))
fit = lm(y ~ x)
summary(fit)
Sé que summary(fit)
muestra el valor p y el valor R cuadrado, pero quiero poder pegarlos en otras variables.
r <- summary(lm(rnorm(10)~runif(10)))
, no muestra nada).Respuestas:
r-cuadrado : puede devolver el valor de r cuadrado directamente desde el objeto de resumen
summary(fit)$r.squared
. Consultenames(summary(fit))
para obtener una lista de todos los elementos que puede extraer directamente.Valor p del modelo: si desea obtener el valor p del modelo de regresión general, esta publicación de blog describe una función para devolver el valor p:
En el caso de una regresión simple con un predictor, el valor p del modelo y el valor p para el coeficiente serán los mismos.
Valores p de coeficiente: si tiene más de un predictor, lo anterior devolverá el valor p del modelo, y el valor p para los coeficientes se puede extraer usando:
Alternativamente, puede tomar el valor p de los coeficientes del
anova(fit)
objeto de manera similar al objeto de resumen anterior.fuente
inherits
queclass
directamente. Y tal vez quieresunname(pf(f[1],f[2],f[3],lower.tail=F))
?Observe que
summary(fit)
genera un objeto con toda la información que necesita. Los vectores beta, se, typ se almacenan en él. Obtenga los valores p seleccionando la cuarta columna de la matriz de coeficientes (almacenada en el objeto de resumen):Intenta
str(summary(fit))
ver toda la información que contiene este objeto.Editar: había leído mal la respuesta de Chase, que básicamente te dice cómo llegar a lo que doy aquí.
fuente
summary(fit)$coefficients[1,4]
para la interpretaciónlm()
pero no funciona paragls()
modelos.Puede ver la estructura del objeto devuelto
summary()
llamandostr(summary(fit))
. Se puede acceder a cada pieza usando$
. El valor p para la estadística F se obtiene más fácilmente del objeto devuelto poranova
.De manera concisa, puedes hacer esto:
fuente
Si bien las dos respuestas anteriores son buenas, el procedimiento para extraer partes de objetos es más general.
En muchos casos, las funciones devuelven listas y se puede acceder a los componentes individuales mediante el
str()
cual imprimirá los componentes junto con sus nombres. Luego puede acceder a ellos utilizando el operador $, es decirmyobject$componentname
.En el caso de objetos LM, hay una serie de métodos predefinidos se pueden usar como
coef()
,resid()
,summary()
etc, pero no siempre será tan afortunado.fuente
Encontré esta pregunta mientras exploraba soluciones sugeridas para un problema similar; Supongo que para futuras referencias puede valer la pena actualizar la lista de respuestas disponible con una solución que utilice
broom
paquete.Código de muestra
Resultados
Notas al margen
Creo que la
glance
función es útil ya que resume claramente los valores clave. Los resultados se almacenan como lodata.frame
que facilita la manipulación adicional:fuente
Extensión de @Vincent 's respuesta :
Para
lm()
modelos generados:Para
gls()
modelos generados:Para aislar un valor p individual en sí mismo, debe agregar un número de fila al código:
Por ejemplo, para acceder al valor p de la intersección en ambos resúmenes del modelo:
Tenga en cuenta que puede reemplazar el número de columna con el nombre de la columna en cada una de las instancias anteriores:
Si aún no está seguro de cómo acceder a un formulario de valores, use la tabla de resumen
str()
para descubrir la estructura de la tabla de resumen:fuente
Esta es la forma más fácil de extraer los valores p:
fuente
Usé esta función lmp muchas veces.
Y en un momento decidí agregar nuevas características para mejorar el análisis de datos. No soy experto en R ni en estadísticas, pero la gente suele buscar información diferente de una regresión lineal:
Tengamos un ejemplo. Tienes aqui
Aquí un ejemplo reproducible con diferentes variables:
Ciertamente hay una solución más rápida que esta función, pero funciona.
fuente
Para el valor p final que se muestra al final de
summary()
, la función se utilizapf()
para calcular a partir de lossummary(fit)$fstatistic
valores.Fuente: [1] , [2]
fuente
fuente
Otra opción es usar la función cor.test, en lugar de lm:
fuente
Utilizar:
donde
num
es un número que denota la fila de la matriz de coeficientes. Dependerá de la cantidad de características que tenga en su modelo y para cuál desea extraer el valor p. Por ejemplo, si solo tiene una variable, habrá un valor p para la intersección que será [1,4] y el siguiente para su variable real que será [2,4]. Entonces tunum
será 2.fuente