OLS 回归因变量的测量误差?

Measurement error in the dependent variable of an OLS regression?

提问人:george1994 提问时间:9/25/2022 最后编辑:george1994 更新时间:9/25/2022 访问量:69

问:

我正在计算蒙特卡洛回归,以分析因变量中的测量误差对 OLS 估计的影响。关于这一点的理论很清楚。平均而言,常数和斜率系数的估计应该是正确的。但是,我的 R 代码会产生一个偏置常数,但会产生一个无偏斜率系数。我怀疑我在将测量误差添加到数据生成过程中时犯了错误?

b1=c()
b2=c()
x1 = rnorm(1000,mean=2,sd=1)
me=runif(1000,0,1)
graph<-data.frame(b1=b1,b2=b2)
for (i in 1:500){
  e = rnorm(1000,mean=0,sd=1)
  y=0.2+0.5*x1+e #true value
  y_o=y+me #observed value 
  c=lm(I(y_o)~I(x1)) 
  b1[i]=data.frame(c$coefficients)[1,1]
  b2[i]=data.frame(c$coefficients)[2,1]
}

plot5ab = ggplot(data=graph) +
  stat_density(aes(x=b1,fill="black"),colour="black",adjust=1.5, alpha=.05)+
  geom_histogram(aes(x=b1,y=..density..),fill = "black", alpha = 0.2,bins =50) +
  stat_density(aes(x=b2,fill="red"),adjust=1.5, alpha=.05,colour="black")+ 
  geom_histogram(aes(x=b2,y=..density..),fill = "red", alpha = 0.2,bins =50) +
  geom_vline(xintercept=0.2, linetype="dashed", color = "blue")+
  geom_vline(xintercept=0.5, linetype="dashed", color = "blue")+
  scale_fill_identity(name = NULL, 
                      labels = c(black = "Alpha", red = "Beta"
                      ),
                      guide = "legend")+
  theme_bw()+
  theme(legend.position = "bottom",
        axis.text.x     = element_text(angle = 90)) +
  labs(title = "Density of estimated parameters", subtitle = "R=500; Dashed blue lines = true parameters",
       y     = "Density",
       x     = "x")
plot5ab
R 线性回归 蒙特卡洛

评论

0赞 IRTFM 9/25/2022
Error in ggplot(data = graph) : object 'graph' not found

答:

3赞 langtang 9/25/2022 #1

您需要在 周围均匀添加错误。相反,您正在做的是平均添加(即 以 ) 为中心,因此,估计截距的平均值是真值 () 加上此平均值,从而产生模数在 或 附近为估计截距的分布。y0.5yme0.50.20.2+0.50.7

相反,我认为您希望将测量误差定义为以零为中心。

尝试:

me = runif(1000, -.3, .3)

此外,应添加到您的原始帖子中。graph<-data.frame(b1=b1,b2=b2)