Tôi có một mô hình hồi quy tuyến tính với một biến phân loại (nam & nữ) và một biến liên tục .
Tôi thiết lập mã tương phản trong R với options(contrasts=c("contr.sum","contr.poly"))
. Và bây giờ tôi có các tổng bình phương loại III cho , và tương tác của chúng (A: B) bằng cách sử dụng .drop1(model, .~., test="F")
Những gì tôi đang mắc kẹt với là cách tổng các bình phương được tính cho . Tôi nghĩ rằng nó là sum((predicted y of the full model - predicted y of the reduced model)^2)
. Các mô hình giảm sẽ trông như thế nào y~A+A:B
. Nhưng khi tôi sử dụng predict(y~A+A:B)
, R sẽ trả về các giá trị dự đoán giống với các giá trị dự đoán của mô hình đầy đủ. Do đó, tổng bình phương sẽ là 0.
(Đối với các tổng bình phương của , tôi đã sử dụng mô hình rút gọn , giống như .)y~B+A:B
y~A:B
Dưới đây là mã ví dụ cho dữ liệu được tạo ngẫu nhiên:
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