2014-02-13 58 views
1

背景:我有一个分类变量,X,与我适合作为单独的虚拟变量四个级别。因此,有三个虚拟变量代表x = 1,x = 2,x = 3(x = 0是基线)。“自动”计算参数估计的线性组合与PROC GLM

问题:我希望能够计算这些虚拟变量的线性组合(即使用SAS作为计算器)的值。例如,2 * B1 + 2 * B2 + B3。

在Stata中,可以使用lincom命令完成此操作,该命令使用存储的β估计来计算参数的线性组合。

在像PROC GLM这样的程序中,我认为我应该使用ESTIMATE语句,但我不确定在这种情况下如何为每个变量指定“权重”。

回答

2

您正在寻找PROC SCORE。这需要输出回归或因子估计,并对新数据集进行评分。看到这里的例子。 http://support.sas.com/documentation/cdl/en/statug/66859/HTML/default/viewer.htm#statug_score_examples02.htm

+0

谢谢。为了使用它,它看起来像我需要A)在输出数据“手动”中寻找感兴趣的线性组合(如果存在)或者B)设置IF/WHERE语句以使SAS输出组合(再次,如果它已经存在于数据中)。但是,如果我想要一些尚不存在的组合,我是否需要将该人员添加到数据集中(结果丢失,因此对回归没有贡献),然后预测值并在数据集中找到它(通过上面的(A)或(B))?这只是...很多简单的编码(但是这是SAS,所以......)。 – Meg

+1

只需创建一个新的数据集,其中包含您想要评分的值。 – DomPazz

+0

好的,谢谢。我也使用过PROC MODEL,但希望有更少的代码。 – Meg

0

如果在输入数据集中添加线性组合作为变量会怎么样?

data myDatasetWithLinCom; 
set mydata; 
LinComb=2*(x=1)+ 2*(x=2)+(x=3); /*equvilent to 2*B1 + 2*B2 + B3*/ 
run; 

然后你可以指定LinComb作为一个解释变量,你可以直接从输出中查找系数。

+0

我不确定这是否给出了正确的答案(这与我手动计算时不一样)。我做了上面显示的内容,然后使用MODEL y = LinComb来匹配PROC REG。这是你所暗示的吗? – Meg

+0

是的,但包括其他解释变量以及LinComb(但不包括构成LinComb的变量)。 – 2014-02-13 16:13:03

+0

在'Proc Logistic'中可能需要查看'offset'选项(如果你正在处理二进制分类):http://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/ viewer.htm#statug_logistic_sect010.htm#statug.logistic.logisticoffset – 2014-02-13 16:15:45

2

仅供参考,PROC MODEL确实允许在模型说明中使用此功能,该功能可能不如PROC SCORE。我知道PROC MODEL可以用来代替PROC REG,但我不确定建模PROC MODEL的先进程度如何,所以它可能不适用于更复杂的模型。我希望得到更少编码的东西,但考虑到SAS的本质,我认为这和PROC SCORE是我将要得到的最好的。

+2

PROC MODEL是ETS包装中的旗舰程序。你可以用它来适应很多不同类型的模型。 – DomPazz