R:数据模拟

R:数据模拟,r,simulation,R,Simulation,我正在尝试运行以下代码: data_greene<-read.delim(file.choose(),header=T) result_b2_HC0<-matrix(1:2000,ncol=4) for (i in 1:500){ X1<-data_greene[[3]]*10^-4 X2<-X1^2 e<-rnorm(50,0,1) sigma2<-exp(5.30+5.30*X1) lambda<-max(sigma2)/min(

我正在尝试运行以下代码:

data_greene<-read.delim(file.choose(),header=T)
result_b2_HC0<-matrix(1:2000,ncol=4)
for (i in 1:500){
  X1<-data_greene[[3]]*10^-4
  X2<-X1^2
  e<-rnorm(50,0,1)
  sigma2<-exp(5.30+5.30*X1)
  lambda<-max(sigma2)/min(sigma2)
  Y<-1+1*X1+0*X2+sqrt(sigma2)*e
  lms<-lmsreg(Y~X1+X2)
  yhat<-lms$fitted
  resid<-lms$residual
  s<-abs(resid)
  lms2<-lmsreg(s~yhat)
  shat<-lms2$fitted
  w1<-1/shat^2
  scale<-lms$scale[1]       
  stdres<-resid/scale

  e=abs(stdres)
  w2<-NULL
  for (i in 1:50){
    if(e[i]<=1.345) w2[i]<-1 else w2[i]<-1.345/e[i]
  }

  w<-w1*w2

  WLS<-lm(Y~X1+X2,weights=w)
  res1<-WLS$residual

  HCCMEHC0<-function(Y,X1,X2){
    X<-cbind(1,X1,X2)
    W<-diag(w)
    inv<-solve(t(X)%*%W%*%X)
    psi0<-diag(res1^2)
    HC0<-inv%*%t(X)%*%W%*%psi0%*%W%*%X%*%inv
    return(HC0)
  }
  result_b2_HC0[i,1]<-WLS$coef[3]
  result_b2_HC0[i,2]<-sqrt(HCCMEHC0(Y,X1,X2)[3,3])
  result_b2_HC0[i,3]<-result_b2_HC0[i,1]/result_b2_HC0[i,2]
  result_b2_HC0[i,4]<-2*pt(-abs(result_b2_HC0[i,3]),df=47)
}
result_b2_HC0

data\u green在两个嵌套for循环中使用相同的变量
i
。将第二个for循环更改为使用变量
j

要避免此错误,请确保始终使用缩进。另外,学习如何使用向量数学。您的第二个循环可以从

e=abs(stdres)
w2<-NULL
for (i in 1:50){
  if(e[i]<=1.345) w2[i]<-1 else w2[i]<-1.345/e[i]
}
e=abs(标准差)

W2您应该检查您的变量
i
,它在第一个循环中使用,并且是一个嵌套的循环。您能指出您使用的数据类型吗。文件本身有问题吗?如果你修复了空格键,这将更容易筛选
e=abs(stdres)
w2<-ifelse( e <= 1.345, 1, 1.345/e )