Tengo un modelo de regresión lineal con una variable categórica (macho y hembra) y una variable continua B .
Configuré códigos de contrastes en R con options(contrasts=c("contr.sum","contr.poly"))
. Y ahora tengo sumas de cuadrados de Tipo III para , B y su interacción (A: B) usando .drop1(model, .~., test="F")
De lo que estoy atascado con es como sumas de cuadrados se calcula para . Yo creo que si sum((predicted y of the full model - predicted y of the reduced model)^2)
. El modelo reducido se vería así y~A+A:B
. Pero cuando lo uso predict(y~A+A:B)
, R está devolviendo valores pronosticados que son los mismos que los valores pronosticados del modelo completo. Por lo tanto, las sumas de cuadrados serían 0.
(Para las sumas de cuadrados de , utilicé un modelo reducido de , que es el mismo que ).y~B+A:B
y~A:B
Aquí hay un código de ejemplo para datos generados aleatoriamente:
A<-as.factor(rep(c("male","female"), each=5))
set.seed(1)
B<-runif(10)
set.seed(5)
y<-runif(10)
model<-lm(y~A+B+A:B)
options(contrasts = c("contr.sum","contr.poly"))
#type3 sums of squares
drop1(model, .~., test="F")
#or same result:
library(car)
Anova(lm(y~A+B+A:B),type="III")
#full model
predFull<-predict(model)
#Calculate sum of squares
#SS(A|B,AB)
predA<-predict(lm(y~B+A:B))
sum((predFull-predA)^2)
#SS(B|A,AB) (???)
predB<-predict(lm(y~A+A:B))
sum((predFull-predB)^2)
#Sums of squares should be 0.15075 (according to anova table)
#but calculated to be 2.5e-31
#SS(AB|A,B)
predAB<-predict(lm(y~A+B))
sum((predFull-predAB)^2)
#Anova Table (Type III tests)
#Response: y
# Sum Sq Df F value Pr(>F)
#(Intercept) 0.16074 1 1.3598 0.2878
#A 0.00148 1 0.0125 0.9145
#B 0.15075 1 1.2753 0.3019
#A:B 0.01628 1 0.1377 0.7233
#Residuals 0.70926 6
fuente
Respuestas:
He encontrado diferencias en la estimación de regresores entre R 2.15.1 y SAS 9.2, pero después de actualizar R a la versión 3.0.1 los resultados fueron los mismos. Entonces, primero le sugiero que actualice R a la última versión.
Está utilizando el enfoque incorrecto porque está calculando la suma del cuadrado contra dos modelos diferentes, lo que implica dos matrices de diseño diferentes. Esto lo lleva a una estimación totalmente diferente en los regresores utilizados por lm () para calcular los valores pronosticados (está usando regresores con diferentes valores entre los dos modelos). SS3 se calcula en base a una prueba de hipotesis, suponiendo que todos los regresores de acondicionamiento son iguales a cero, mientras que el regresor condicionado es igual a 1. Para los cálculos, se usa la misma matriz de diseño utilizada para estimar el modelo completo, como para el regresor estimado en su totalidad modelo. Recuerde que los SS3 no son aditivos completos. Esto significa que si suma el SS3 estimado, no obtiene el modelo SS (SSM).
Aquí sugiero una implementación R de las matemáticas que implementa el algoritmo GLS utilizado para estimar SS3 y regresores.
Los valores generados por este código son exactamente los mismos generados con SAS 9.2 que para los resultados que dio en su código, mientras que el SS3 (B | A, AB) es 0.167486 en lugar de 0.15075. Por esta razón, sugiero nuevamente que actualice su versión R a la última disponible.
Espero que esto ayude :)
fuente