【问题标题】:Simulations in R for HeteroskedasticityR中的异方差模拟
【发布时间】:2013-11-06 02:25:53
【问题描述】:

我想模拟异方差性并查看 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 循环工作。有人有什么建议吗?

【问题讨论】:

    标签: r montecarlo


    【解决方案1】:
    require(tseries)
    # if you dont have above package, please install it
    # it can be done by running following code
    # install.packages('tseries')
    
    ########### function that simulates 100 times for hetro- 
    test_gen=function(n,m){
      esp=0
      saved=0
      for(i in 1:m){   # simulate  100 times
        X=rnorm(n,25,1)
        for(j in 1:length(X)){
        eps[j]=rnorm(1,0,sqrt((X[j])^2)[1])
        }
        Y=1.5*X+eps
    
        temp=white.test(X,Y)
    
        saved[i]=temp$p.value
      }
      return(saved)
    }
    
    #red dots are the values less than 0.05
    #n controls the size of sample
    #m controls numbers of simulation
    n=20
    m=100
    out=test_gen(n,m)
    plot(c(1:length(out)),out,main="p-value(whitetest) for each simulated data") 
    ind=out<0.05
    points(c(1:length(out))[ind],out[ind],col='red',pch=16)
    

    out2=0
    #simulate 100 times for each specific data size 
    for(i in 20:100){
      k=i-19
      temp=test_gen(i,100)
      out2[k]=sum(temp<0.5)/100
    }
    
    plot(20:100,out2,main="error rate",xlab="sample size") # error rate
    

    我觉得我在做你的功课......无论如何祝你好运

    【讨论】:

    • 谢谢!我想知道如何在这里更改 alpha 级别?我假设代码当前设置为 0 的 alpha 级别?或者有没有办法做到这一点?例如,我尝试对 alpha=0.1 执行 eps[j]=rnorm(1,0,0.1*sqrt((X[j])^2)[1]) ,但效果不太好?
    • 我将上述代码的 alpha 设置为 0.05。回想一下 pvalue 拒绝 null。
    • 啊,我看到了混乱,可能是写我想做的事情的不好的方式。如顶部所示,我使用 alpha 来表示异方差参数,并且想知道如何对其进行编码?
    猜你喜欢
    • 2017-05-29
    • 2016-06-18
    • 1970-01-01
    • 2019-11-26
    • 2021-11-26
    • 1970-01-01
    • 2019-05-13
    • 2011-07-08
    • 2016-05-24
    相关资源
    最近更新 更多