library(MASS)
Data = matrix (NA, 28, 64);
a<-c(-1,-1,-1,674,NA,0,-1,-1,1414,NA,1,-1,-1,3636,NA,-1,0,-1,338,NA,0,0,-1,1022,NA,1,0,-1,1368,NA,-1,1,-1,170,NA,0,1,-1,442,NA,1,1,-1,1140,NA,-1,-1,0,370,NA,0,-1,0,1198,NA,1,-1,0,3184,NA,-1,0,0,266,NA,0,0,0,620,NA,1,0,0,1070,NA,-1,1,0,118,NA,0,1,0,332,NA,1,1,0,884,NA,-1,-1,1,292,NA,0,-1,1,634,NA,1,-1,1,2000,NA,-1,0,1,210,NA,0,0,1,438,NA,1,0,1,566,NA,-1,1,1,90,NA,0,1,1,220,NA,1,1,1,360,NA)
A<-matrix(a,byrow=T,ncol=5)
y<-A[,4]
x1<-A[,1]
x2<-A[,2]
x3<-A[,3]
boxcox(y~x1+x2+x3+x1*x1+x2*x2+x3*x3+x1*x2+x1*x3+x2*x3,lambda=seq(-3,3,len=60))
Data[1:27,1]<-x1
Data[1:27,2]<-x2
Data[1:27,3]<-x3
Data[1:27,4]<-y
gm=-exp(mean(log(A[,4])))
N=matrix(NA,61,1)
N[1]=-3
SSE<-function(data,n)
{
for(i in 1:60){
N[i+1]=N[i]+0.1
bm=-560.9381^(1-N[i])
for(j in 1:n){
if(N[i]!=0) data[j,i+4]=bm*(data[j,4]^(N[i]-1))/N[i] else data[j,i+4]=-560.9381*log(data[j,4])
}
x4<-data[1:27,i+4]
test<-anova.lm(lm(x4~x1+x2+x3+x1*x1+x2*x2+x3*x3+x1*x2+x1*x3+x2*x3))
data[28,i+4] <- test['Residuals','Sum Sq']
}
data
}
SSE(Data,27)
新手菜鸡,写的又乱又蠢
那么问题来了:
1:lambda=0的else语句好像永远不执行,无论else后的命令怎么取,我的lambda=0点的sse都是个巨大的数——10的30次方
2:其他的点虽然都是正常数,但是和题目给的值也是有很大的区别。。。
新手菜鸡,没有啥论坛币也,求好心大神帮助啊!!