[R语言]蒙特卡罗模拟检验CLRM假定下最小二乘量的BLUE性质

本文为大家带来的是通过蒙特卡罗模拟(Monte CarloSimulation)检验CLRM假定下,最小二乘估计量的BLUE性质的检验。(Monte Carlo本质上是一种计算机模拟或抽样实验),以下的实验过程来自于古扎拉蒂 计量经济学(第5版),第三章3.8.验证OLS估计是无偏估计。


 




1-3. 给参数beta1,2,样本大小n和所有观测的X值赋值。这里我们取beta1=20,beta2=0.6,样本大小n取25,观测值X以向量形式从1取到n(1:n来表示),即到25。

  b1 <- 20
  b2 <- 0.6
  n <- 25
  X <- c(1:n)



4. 利用rnorm函数生成n个正态分布的随机数,并将他们组成向量其值赋给u。

5. 根据上述公式计算出对应的向量Y。

  u <- rnorm(n)
  Y <- b1+b2*X+u



6. 利用回归函数lsfit()对X,Y做回归(这里用lm(Y~X)函数做回归也可以),然后用$符号取出coefficients中的回归系数。

7. 用for循环重复实验100次,i作为计数变量,每一次循环得出的结果放入一个叫做lsfit.b的数组里(数组名随便你取啦)的一行,所以最终这个数组就应该有100行,2列,所以我们需要在循环体外面先初始化一个所有元素全为0的100行2列的数组,dim中的向量就是行列数,然后在循环体内把每第i次循环计算出的回归系数放在数组的第i行。

lsfit.b <- array(0, dim = c(100,2))
for(i in 1:100){
  lsfit.b[i,] <- c(lsfit(X,Y)$coefficients)
}



8. 最终我们利用apply函数按列计算出数组lsfit.b中平均数,参数2表示按第二行,mean表示取均值。

9. 输出结果就好啦

lsfit.bmean <- apply(lsfit.b, 2, mean)
lsfit.bmean



以下是具体的全部代码,因为先开始忽视了随机数u需要满足正态分布的条件,并且手抖把赋值写到循环里去啦,不过现在都已经改正啦~结果比对与初值是差不多的,检验正确~

 ~\(≧▽≦)/~ 
  b1 <- 20
  b2 <- 0.6
  n <- 25
  X <- c(1:n)
  u <- rnorm(n)
  Y <- b1+b2*X+u
lsfit.b <- array(0, dim = c(100,2))
for(i in 1:100){
  lsfit.b[i,] <- c(lsfit(X,Y)$coefficients)
}
lsfit.bmean <- apply(lsfit.b, 2, mean)
lsfit.bmean










  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值