估计b1X1+b2X2b1x1+b2x2代替b1X1+b2X2+b3X3b1x1+b2x2+b3x3

机器算法验证 回归 多重回归 内生性
2022-02-15 02:13:17

我有一个理论经济模型如下,

y=a+b1x1+b2x2+b3x3+u

所以理论说有x1,x2x3估计的因素y.

现在我有了真实的数据,我需要估计b1,b2,b3. 问题是真实数据集只包含x1x2; 没有数据x3. 所以我实际上可以拟合的模型是:

y=a+b1x1+b2x2+u

  • 可以估计这个模型吗?
  • 我会失去任何估计它的东西吗?
  • 如果我估计b1,b2,那么在哪里b3x3学期去?
  • 是否由误差项解释u?

我们想假设x3不相关x1x2.

3个回答

你需要担心的问题叫做内生性更具体地说,这取决于是否x3在人群中与x1或者x2. 如果是,则相关联bjs 会有偏差。那是因为OLS回归方法强制残差,ui,与你的协变量不相关,xjs。但是,您的残差由一些不可约的随机性组成,εi以及未观察到的(但相关的)变量,x3, 根据规定x1和/或x2. 另一方面,如果两者 x1x2不相关x3在人口中,那么他们的bs 不会因此而产生偏见(当然,它们很可能会受到其他事物的偏见)。计量经济学家试图处理这个问题的一种方法是使用工具变量

为了更清楚起见,我在 R 中编写了一个快速模拟,演示了b2是无偏的/以真实值为中心的β2, 当它与x3. 但是,在第二次运行中,请注意x3x1, 但不是x2. 并非巧合,b1是公正的,但是b2 有偏见的。

library(MASS)                          # you'll need this package below
N     = 100                            # this is how much data we'll use
beta0 = -71                            # these are the true values of the
beta1 = .84                            # parameters
beta2 = .64
beta3 = .34

############## uncorrelated version

b0VectU = vector(length=10000)         # these will store the parameter
b1VectU = vector(length=10000)         # estimates
b2VectU = vector(length=10000)
set.seed(7508)                         # this makes the simulation reproducible

for(i in 1:10000){                     # we'll do this 10k times
  x1 = rnorm(N)
  x2 = rnorm(N)                        # these variables are uncorrelated
  x3 = rnorm(N)
  y  = beta0 + beta1*x1 + beta2*x2 + beta3*x3 + rnorm(100)
  mod = lm(y~x1+x2)                    # note all 3 variables are relevant
                                       # but the model omits x3
  b0VectU[i] = coef(mod)[1]            # here I'm storing the estimates
  b1VectU[i] = coef(mod)[2]
  b2VectU[i] = coef(mod)[3]
}
mean(b0VectU)  # [1] -71.00005         # all 3 of these are centered on the
mean(b1VectU)  # [1] 0.8399306         # the true values / are unbiased
mean(b2VectU)  # [1] 0.6398391         # e.g., .64 = .64

############## correlated version

r23 = .7                               # this will be the correlation in the
b0VectC = vector(length=10000)         # population between x2 & x3
b1VectC = vector(length=10000)
b2VectC = vector(length=10000)
set.seed(2734)

for(i in 1:10000){
  x1 = rnorm(N)
  X  = mvrnorm(N, mu=c(0,0), Sigma=rbind(c(  1, r23),
                                         c(r23,   1)))
  x2 = X[,1]
  x3 = X[,2]                           # x3 is correated w/ x2, but not x1
  y  = beta0 + beta1*x1 + beta2*x2 + beta3*x3 + rnorm(100)
                                       # once again, all 3 variables are relevant
  mod = lm(y~x1+x2)                    # but the model omits x3
  b0VectC[i] = coef(mod)[1]
  b1VectC[i] = coef(mod)[2]            # we store the estimates again
  b2VectC[i] = coef(mod)[3]
}
mean(b0VectC)  # [1] -70.99916         # the 1st 2 are unbiased
mean(b1VectC)  # [1] 0.8409656         # but the sampling dist of x2 is biased
mean(b2VectC)  # [1] 0.8784184         # .88 not equal to .64

让我们用几何术语来考虑这一点。想想一个“球”,一个球的表面。它被描述为r2=ax2+by2+cz2+ϵ. 现在,如果您有以下值x2,y2,z2, 你有测量值 r2然后你可以确定你的系数“a”、“b”和“c”。(你可以称它为椭球体,但称它为球更简单。)

如果你只有 x2, 和y2条款然后你可以做一个圆圈。您将描述一个实心圆,而不是定义球的表面。您改为拟合的方程式是r2ax2+by2+ϵ.

您正在将“球”(无论它是什么形状)投射到圆的表达式中。它可能是一个对角定向的“球”,形状更像缝纫针,所以z组件完全破坏了两个轴的估计。它可能是一个看起来像一个几乎被压碎的 m&m 的球,其中硬币轴是“x”和“y”,并且投影为零。没有“你无法知道它是什么”z“ 信息。

最后一段是在谈论“纯信息”案例,并没有考虑到噪音。现实世界的测量具有带噪声的信号。沿与轴对齐的周边的噪音将对您的合身性产生更大的影响。即使您有相同数量的样本,您的参数估计也会有更多的不确定性。如果它是一个不同于这个简单的线性轴导向情况的方程,那么事情可能会变成“梨形”。您当前的方程是平面形状的,因此 z 数据可能只是覆盖整个地图,而不是有界限(球的表面) - 投影可能是一个严重的问题。

做模特好吗?那是一个判断电话。了解问题细节的专家可能会回答这个问题。我不知道如果他们远离问题,是否有人可以给出一个好的答案。

您确实会失去一些好处,包括参数估计的确定性以及正在转换的模型的性质。

估计为b3消失在 epsilon 和其他参数估计中。它包含在整个方程中,具体取决于底层系统。

其他答案虽然没有错,但使问题变得有点复杂。

如果x3x1x2(并且真正的关系是指定的)然后你可以毫无问题地估计你的第二个方程。正如你所建议的,β3x3将被(新的)误差项吸收。只要所有其他 OLS 假设成立,OLS 估计将是无偏的。