我想模拟异方差性,看看 White 检验如何针对各种样本量执行(这类似于 Greene,但测试不同类型)。
现在,我要测试的模型是:
Replications=1000=n
y=1.5x+ e
x ~ N(25, 15)
e ~ N(0, sigma_i)
sigma_i= 1+ alpha (sqrt(x[i]^2)
并说最初的样本大小=20(改变这部分很容易)
因此,使用 bstats 命令进行白色测试,我将代码编写为
for (j in 1:n) {
for (i in 1:20){
x[i]=rnorm(1, 25, 15)
sigma [i]=1+0*sqrt(x[i]^2)
epsilon[i]=rnorm(1, 0, sigma[i])
y[i]=1.5*x[i]+epsilon[i]}
lm1[j]<- lm(y~x); white.test(lm1[j])
if (white.test(lm1)$p.value > 0.05){ind=ind
}else{
if (white.test(lm1)$p.value < 0.05) {ind=ind+1}
}
IND1=ind/1000}
}
现在,我知道这是一个问题,因为 i 部分有效,但我无法让外部 for 循环工作。有没有人有什么建议?