Daré mis ejemplos con llamadas R. Primero, un ejemplo simple de una regresión lineal con una variable dependiente 'vida útil', y dos variables explicativas continuas.
data.frame(height=runif(4000,160,200))->human.life
human.life$weight=runif(4000,50,120)
human.life$lifespan=sample(45:90,4000,replace=TRUE)
summary(lm(lifespan~1+height+weight,data=human.life))
Call:
lm(formula = lifespan ~ 1 + height + weight, data = human.life)
Residuals:
Min 1Q Median 3Q Max
-23.0257 -11.9124 -0.0565 11.3755 23.8591
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 63.635709 3.486426 18.252 <2e-16 ***
height 0.007485 0.018665 0.401 0.6884
weight 0.024544 0.010428 2.354 0.0186 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 13.41 on 3997 degrees of freedom
Multiple R-squared: 0.001425, Adjusted R-squared: 0.0009257
F-statistic: 2.853 on 2 and 3997 DF, p-value: 0.05781
Para encontrar la estimación de 'vida útil' cuando el valor de 'peso' es 1, agrego (Intercepción) + altura = 63.64319
Ahora, ¿qué pasa si tengo un marco de datos similar, pero uno donde una de las variables explicativas es categórica?
data.frame(animal=rep(c("dog","fox","pig","wolf"),1000))->animal.life
animal.life$weight=runif(4000,8,50)
animal.life$lifespan=sample(1:10,replace=TRUE)
summary(lm(lifespan~1+animal+weight,data=animal.life))
Call:
lm(formula = lifespan ~ 1 + animal + weight, data = animal.life)
Residuals:
Min 1Q Median 3Q Max
-4.7677 -2.7796 -0.1025 3.1972 4.3691
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.565556 0.145851 38.159 < 2e-16 ***
animalfox 0.806634 0.131198 6.148 8.6e-10 ***
animalpig 0.010635 0.131259 0.081 0.9354
animalwolf 0.806650 0.131198 6.148 8.6e-10 ***
weight 0.007946 0.003815 2.083 0.0373 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.933 on 3995 degrees of freedom
Multiple R-squared: 0.01933, Adjusted R-squared: 0.01835
F-statistic: 19.69 on 4 and 3995 DF, p-value: 4.625e-16
En este caso, para encontrar la estimación de 'vida útil' cuando el valor de 'peso' es 1, ¿debo agregar cada uno de los coeficientes para 'animal' a la intersección: (Intercepción) + animalfox + animalpig + animalwolf? ¿O cuál es la forma correcta de hacer esto?
Gracias Sverre
code
, sangría por 4 espacios.code
línea completa , use las líneas de retroceso:this is code with a $ and *
set.seed(1)
(o el número que desee) antes de ejecutar la generación de números aleatorios, de modo que todos obtengan exactamente los mismos resultados que usted (aunque no importa mucho en este caso).Respuestas:
No, no debes sumar todos los coeficientes juntos. Básicamente tienes el modelo
donde, por ejemplo, si el animal era un cerdo y 0 en caso contrario. Entonces, para calcular como ha sugerido para obtener el promedio general cuando es como decir "si fueras un cerdo, un lobo y un zorro y tu peso fuera 1, ¿cuál es tu esperanza de vida esperada?". Claramente, dado que cada animal es solo una de esas cosas, eso no tiene mucho sentido.p i g =1 β0 0+β1+β2+β3+β4 4 w e i g h t =1
Tendrá que hacer esto por separado para cada animal. Por ejemplo, es la vida útil esperada de un cerdo cuando su peso es 1.β0 0+β2+β4 4
fuente
Lo más simple es usar la función de predicción en el objeto lm, luego se ocupa de muchos de los detalles, como convertir un factor a los valores correctos para sumarlos. Si está tratando de comprender las piezas que entran en la predicción, configure
type='terms'
y mostrará las piezas individuales que se suman para hacer su predicción.Tenga en cuenta también que la forma en que un factor se convierte en variables depende de algunas opciones, el valor predeterminado elegirá un grupo de referencia para comparar los otros grupos, pero también puede establecerlo en un promedio y las diferencias de ese promedio (u otras comparaciones de interés) .
fuente
Si desea el promedio de vida útil cuando el peso es 1, entonces puede sacar "animal" en esta llamada:
fuente