使用stata,考虑如下总体回归模型,或数据生成过程(Data Generating Process,DGP): y=2+3x1+4x2+u,若假定解释变量服从正态分布:x1~N(3,4)与 x2~N(2,9),扰动项服从 正态分布:u~N(0,4),假定样本容量 n 为 50。 接下来进行 1000 次多元线性回归模拟,每一次回归都能得到一个样本回归函数(SRF), 计算这 1000 次回归得到的 2 个解释变量参数以及常数项的平均值,并与总体回归函数 的参数值做比较
时间: 2024-03-19 19:45:42 浏览: 492
好的,根据您的问题,我可以给出以下解答:
首先,使用 Stata 可以通过以下代码生成符合要求的数据集:
```
clear
set obs 50
set seed 12345
gen x1 = rnormal(3, 2)
gen x2 = rnormal(2, 3)
gen u = rnormal(0, 2)
gen y = 2 + 3*x1 + 4*x2 + u
```
然后,我们可以进行 1000 次多元线性回归模拟,每次回归都能得到一个样本回归函数(SRF),并计算这 1000 次回归得到的 2 个解释变量参数以及常数项的平均值,代码如下:
```
qui sum x1 x2 y
scalar x1_mean = r(mean)
scalar x2_mean = r(mean)
scalar y_mean = r(mean)
qui sum x1 x2
scalar x1_var = r(variance)
scalar x2_var = r(variance)
scalar b0 = 0
scalar b1 = 0
scalar b2 = 0
forvalues i = 1/1000 {
qui reg y x1 x2
scalar b0 = b0 + _b[_cons]
scalar b1 = b1 + _b[x1]
scalar b2 = b2 + _b[x2]
}
scalar b0_mean = b0 / 1000
scalar b1_mean = b1 / 1000
scalar b2_mean = b2 / 1000
```
最后,我们可以将上述结果与总体回归函数的参数值进行比较,计算其偏差,代码如下:
```
scalar bias_b0 = b0_mean - 2
scalar bias_b1 = b1_mean - 3
scalar bias_b2 = b2_mean - 4
scalar se_b0 = sqrt(4/50)
scalar se_b1 = sqrt(4/50)/sqrt(2)
scalar se_b2 = sqrt(4/50)/sqrt(9)
scalar t_b0 = bias_b0 / se_b0
scalar t_b1 = bias_b1 / se_b1
scalar t_b2 = bias_b2 / se_b2
display "Bias of b0: " bias_b0
display "Bias of b1: " bias_b1
display "Bias of b2: " bias_b2
display "t-value of b0: " t_b0
display "t-value of b1: " t_b1
display "t-value of b2: " t_b2
```
其中,bias_b0、bias_b1、bias_b2 分别表示常数项、x1、x2 的偏差,t_b0、t_b1、t_b2 分别表示常数项、x1、x2 的 t 值。如果 t 值的绝对值大于 1.96,则说明相应的参数在 95% 置信水平下显著不等于总体回归函数的参数值。
阅读全文