具有稳健(白色)标准误差和固定效应的 CLASS 变量的回归

问题描述 投票:0回答:4

proc glm
可以轻松添加固定效果,而无需为类变量的每个可能值创建虚拟变量。

proc reg
能够计算稳健(白色)标准误差,但它需要您创建单独的虚拟变量。

有什么方法可以将这些功能结合起来吗?我希望能够添加许多类变量并在输出中接收白色标准错误。例如:

有了

proc glm
,我可以做这个回归。无论类变量中包含多少个级别,这都会给出正确的结果,但它不会计算稳健的标准误差。

proc glm data=ds1;
  class class1 class2 class3;
  weight n;
  model y = c class1 class2 class3 / solution;
run;

有了

proc reg
,我可以做到:

proc reg data=ds2;
  weight n;
  model y = x / white;
run;

具有白色标准误差,但不包含固定效应。 为此,我可能需要 50 个或更多虚拟变量和像

model y = x class1_d1 class1_d2 ... class3_dn /white;
这样的模型语句。如果我开始添加交互项,就会变成一个疯狂的数字或虚拟变量。

显然我可以编写一个宏来创建虚拟变量,但这似乎是一个基本函数,我不禁认为我错过了一些明显的东西(STATA 和 R 都有办法轻松做到这一点)。为什么我不能在

class
中使用
proc reg
语句或从
proc glm
中获得可靠的标准错误?

sas
4个回答
2
投票

我想我找到了部分答案,尽管我对其他解决方案或对此解决方案的调整感兴趣。

proc glmmod
可用于创建
proc reg
的数据集:

proc glmmod noprint outdesign=ds2 data=ds1;
  class class1 class2 class3;
  weight n;
  model y = c class1 class2 class3;
run;

proc reg data=ds2;
  weight n;
  model y = col2-col50 / white;
run;

proc glmmod
使用 GLM 语法并输出包含
proc reg
需要的所有虚拟变量的回归数据集。

不像单 PROC 解决方案那么干净(并且您必须跟踪标签才能查看 ColXX 所指的内容),但它似乎工作得很好。


0
投票

我认为你可以: (1) 删除缺失变量的观测值 (2) 使用proc标准贬低自变量 (3) 将因变量回归到贬低的自变量上

http://pages.stern.nyu.edu/~adesouza/sasfinphd/index/node60.html http://pages.stern.nyu.edu/~adesouza/sasfinphd/index/node61.html

上述过程中的系数与 proc glm(弗里施-沃定理)中的系数完全相同。但是,您不必创建假人(这是您的主要问题)。要获得可靠的标准错误,您可以简单地在步骤(3)上使用 proc reg 并使用白色标准错误。

希望有帮助。


0
投票

我想我对此有一个答案(或者至少,如果我没有,我可能会通过在此处发布我的解决方案来找到答案)。

根据本页,可以通过对数据进行聚类,使用 proc Surveyreg 计算稳健的标准误差,以便每个观测值都是其自己的聚类。像这样:

data mydata;
set mydata;
counter=_n_;
run;

proc surveyreg data=mydata;
cluster counter;
model y=x;
run;

但是 proc Surveyreg 采用类声明,以便可以运行例如

proc surveyreg data=mydata;
class t;
cluster counter;
model y= t x*t / solution;
run;

0
投票

尝试使用 method= m (wf=huber) 进行 procRobustreg ...这将使您获得强大的标准错误,尽管严格来说不是“White's”。我发现它非常消耗资源,因此在每个人 64 个观测点上进行大约 10 万次观测是不可行的。

© www.soinside.com 2019 - 2024. All rights reserved.