在执行4个步骤的迭代计算时,我得到一个错误说法
eps [[i]] = rnorm(100,0,sigma)中的错误:提供的元素多于要替换的元素
代码是:
f <- list()
residual <- list()
eps <- list()
err <-list()
y<- list()
for(i in 1:4){
eps[[i]]=rnorm(100,0,sigma)
eps<-t(sapply(eps, unlist))
y[[i]]= b0 + b1*x1 + b2*x2 + eps
y<-t(sapply(y, unlist))
residual[[i]]= e*y
f[[i]]=e*eps
err[[i]]=eps
}
注意,b0,b1,b2,sigma
是常数,x1,x2
每个都是100阶的向量,e
是100阶的方阵。
这样做意味着什么吗?
f <- list()
residual <- list()
eps <- list()
err <-list()
y<- list()
sigma=1.4
b0 <- 17
b1 <- 0.5
b2 <- 0.037
x1 = 1:100
x2=101:200
e = matrix(nrow = 100, ncol = 100, data = 1:10000)
for(i in 1:4){
eps[[i]]=rnorm(100,0,sigma)
#eps<-t(sapply(eps, unlist))
y[[i]]= b0 + b1*x1 + b2*x2 + eps[[i]]
#y<-t(sapply(y, unlist))
residual[[i]]= e*y[[i]]
f[[i]]=e*eps[[i]]
err[[i]]=eps[[i]]
}
一种选择是改变线
eps[[i]]=rnorm(100,0,1)
如
eps[[i]]=list(rnorm(100,0,1))
此外,相应的更改将如下:
b0 <- 17
b1 <- 0.5
b2 <- 0.037
for(i in 1:4){
eps[[i]]=list(rnorm(100,0,1))
#eps<-t(sapply(eps, unlist))
y[[i]]= b0 + b1*x1 + b2*x2 + as.data.frame(eps[[i]])
y<-t(sapply(y, unlist))
residual[[i]]= e*as.data.frame(y[[i]])
f[[i]]=e*as.data.frame(eps[[i]])
err[[i]]=eps[[i]]
}