在当我们缺少值时,系统会告诉我用-1代替,然后添加一个指示符,该变量等于-1。这样就可以不删除变量或观测值。
我们在这里模拟数据,然后根据模型生成数据。未定义将转换为NA。一般建议是将缺失值替换为-1,然后拟合未定义的模型。默认情况下,R的策略是删除缺失值。如果未定义50%,则缺少数据,将删除一半的行
n=1000
x1=runif(n)
x2=runif(n)
e=rnorm(n,.2)
y=1+2*x1-x2+e
alpha=.05
indice=sample(1:n,size=round(n*alpha))
base=data.frame(y=y,x1=x1)
base$x1[indice]=NA
reg=lm(y~x1+x2,data=base)
我们模拟10,000,然后看看未定义的分布,
m=10000
B=rep(NA,m)
hist(B,probability=TRUE,col=rgb(0,0,1,.4),border="white",xlab="missing values = 50%")
lines(density(B),lwd=2,col="blue")
abline(v=2,lty=2,col="red")
当然,丢失值的比率较低-丢失的观测值较少,因此估计量的方差较小。