【问题标题】:Post-estimation commands in Stata _b[] for categorical variablesStata _b[] 中用于分类变量的后估计命令
【发布时间】:2017-02-11 07:36:37
【问题描述】:

编辑:下面提供了一个工作示例

ORIGINAL:后估计命令可用于预测因变量的值。这是一个示例,您可以在其中键入 _b[_cons] + _b[x1]*1 + _b[x2] 以获得 Y 的实际值。对于 Stata 上的大多数在线示例,这些值要么是虚拟的,要么是连续的。如果我有一个难以手动转换为多个虚拟变量的分类变量(例如 52 周)怎么办?我可以通过告诉 Stata 选择正确的值来保留我的所有分类变量并仍然运行如下所示的后期估计命令吗?

regress write female read

      Source |       SS       df       MS              Number of obs =     200
-------------+------------------------------           F(  2,   197) =   77.21
       Model |  7856.32118     2  3928.16059           Prob > F      =  0.0000
    Residual |  10022.5538   197  50.8759077           R-squared     =  0.4394
-------------+------------------------------           Adj R-squared =  0.4337
       Total |   17878.875   199   89.843593           Root MSE      =  7.1327

------------------------------------------------------------------------------
       write |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
      female |   5.486894   1.014261     5.41   0.000      3.48669    7.487098
        read |   .5658869   .0493849    11.46   0.000      .468496    .6632778
       _cons |   20.22837   2.713756     7.45   0.000     14.87663    25.58011
------------------------------------------------------------------------------
and then ask

gen _b[_cons] + _b[female]*1 + _b[read]*52   

display _b[_cons] + _b[female]*1 + _b[read]*52
55.141383

工作示例:为了说明我的观点,这里有一个小数据样本,其中包含一个分类变量 (pack)、一个连续变量 (price) 和一个二分指标 (type)。运行回归后,我想运行一个可以生成预测值的后估计命令(如predict 或简单的gen)。为此,到目前为止,我发现的唯一 Stata 代码只能使用连续变量和二进制变量预测 y,而不能使用分类变量。您是否知道可以解决包含pack 的问题而不将pack 转换为多个二进制变量的代码?

clear
input  units price pack type
32 4 6 1
2 20 18 1
34 5 6 1
32 8 6 0
29 5 6 0
5 10 12 0
7 10 12 0
1 10 18 0

end

reg units price type i.pack
predict yhat
*OR
gen yhat=_b[_cons]+_b[_type]+....??pack??

【问题讨论】:

  • 请注意,您的generate 语句不是合法代码。这是一个关于基础知识的广泛问题:help estimates 是一个起点。
  • 嗨尼克。我很难找到一个可以选择适当分类值的后估计命令。它仅适用于虚拟变量和连续变量。有什么建议我可以在哪里寻找它?
  • 对不起;我完全不明白。除了通过一组指标外,我不知道如何获得分类预测器。像您这样更广泛的讨论性问题在 Statalist 上的表现更好,但基于数据和代码的精确示例更有可能在任何论坛中获得好的答案。
  • 我不明白为什么你觉得predict 在你的例子中不起作用。
  • 您似乎期望具有三个或更多类的分类预测器有一个术语。但是没有。

标签: stata


【解决方案1】:

目前尚不清楚您所说的“正确”值是什么意思。 predict 使用数据中当前的任何值并将其乘以相应的系数(假设您使用因子变量表示法)。

但是,margins 有一个半文档化的generate() 选项,可以在灵活选择的协变量值下为您提供单独的预测。它可能会给你任何你内心想要的东西。

这是一个使用您的数据的示例:

clear
input  units price pack type
32 4 6 1
2 20 18 1
34 5 6 1
32 8 6 0
29 5 6 0
5 10 12 0
7 10 12 0
1 10 18 0
end

reg units price type i.pack, coefl
predict double yhat1
margins, predict(xb) gen(yhat2) // match predict #1
margins, predict(xb) gen(yhat3) at((asobserved) price type pack) // match predict #2
gen double yhat4=_b[_cons] + _b[price]*price + _b[type]*type + _b[12.pack]*12.pack + _b[18.pack]*18.pack //match predict #3
margins, predict(xb) gen(yhat5) at(price = 5 type=1 pack=6) // choose some values
gen double yhat6=_b[_cons] + _b[price]*5 + _b[type]*1 + _b[12.pack]*0 + _b[18.pack]*0 // yhat5 by hand 
list yhat*, clean noobs

前四种方法的预测都是相同的;第五个和第六个将与前四个不同,并且都是相同的,因为我们将所有协变量固定在特定值:

. list yhat*, clean noobs

        yhat1      yhat21      yhat31       yhat4      yhat51       yhat6  
    32.773585   32.773585   32.773585   32.773585   32.764151   32.764151  
    2.4622642   2.4622642   2.4622642   2.4622642   32.764151   32.764151  
    32.764151   32.764151   32.764151   32.764151   32.764151   32.764151  
    30.716981   30.716981   30.716981   30.716981   32.764151   32.764151  
    30.745283   30.745283   30.745283   30.745283   32.764151   32.764151  
            6           6           6           6   32.764151   32.764151  
            6           6           6           6   32.764151   32.764151  
    .53773585   .53773585   .53773585   .53773585   32.764151   32.764151  

请参阅help margins generatehelp undocumented 了解更多信息。

【讨论】:

  • 是的,谢谢,这正是我想要的。
  • @Olga 您可以混合使用 at() 选项的各种边距,还有很多其他的我没有在这里介绍。
  • Dimitriy,我发现了一段额外的代码可以与 margins 一起使用,您可以在其中将特定变量设置为零,类似于 (x1=0 x2=0 x3=0)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多