【问题标题】:Hessian in SAS?SAS中的黑森州?
【发布时间】:2015-02-02 10:58:12
【问题描述】:

有没有办法在 SAS 的 proc 逻辑中获取 Hessian 矩阵?或者哪个选项可以计算它从 proc 逻辑的出发?

我一直在阅读函数文档,但看不到有办法将其包含在输出表中。

【问题讨论】:

  • 添加 sas-iml 以防 iml 人员之一知道答案。您可能想查看this SAS newsgroup question,因为它看起来可能无法直接获得,但他们有一些关于如何计算它的说明。
  • 感谢您的标签建议。我看到了您之前发布的链接,但是我的代码已经很耗时(大约 2-3 小时,因为它估计有 1000 多个模型并且数据集“很大”),所以我想让它尽可能简单。我不敢相信 SAS 在逻辑过程中不输出粗麻布矩阵!我以前在 matlab 和 R 中做过。
  • 在 community.sas.com 上发布问题,SAS 人员可以回复。如果没有办法,您也可以将其作为想法添加到该网站上。
  • 您还应该考虑在程序之前尝试ods trace on; 并检查它是否可用 - 我具体不熟悉它,但通过这种方式可以获得很多隐藏数据。
  • 谢谢乔,我会调查的。但是,我错过了参数估计的协方差矩阵(它是 proclogistic 中的输出)是从 hessian 矩阵计算的这一点。所以通过这种方式可以很好地估计粗麻布!

标签: sas glm logistic-regression sas-iml hessian-matrix


【解决方案1】:

我浏览了 SAS 博客,可能已经找到了一种可以使用 proc nlp 进行估算的方法。

data t1;
do i = 1 to 500;
x=rannor(3478);
y=1+2*x>rannor(3478);
output;
end;
run;

proc logistic data=t1 outest=parm covout desc;
model y=x/link=probit;
score data=t1 out=t2;
run;

proc nlp data=t1 outest=t2 PHESSIAN;
parms a=0, b=0 ;
max ll;
xbeta = a + b * x;
if y=1 then p=probnorm(xbeta);
else if y=0 then p=1-probnorm(xbeta);
ll=LOG(p);
run;

proc print data=parm(where=(_TYPE_='COV')); run;

*calculation covariance from hessian in above;
proc iml;

HESSIAN={ -143.2141617 64.771275623,
64.771275623 -64.13869603
};
HESSIAN_inv_neg=-inv(HESSIAN);
print HESSIAN ;
print HESSIAN_inv_neg;
quit;

希望这会有所帮助。

原答案贴在这里:http://comp.soft-sys.sas.narkive.com/nXdobtA5/hessian-and-scores-in-the-logistic-proc

【讨论】:

    猜你喜欢
    • 2014-08-13
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多