SAS与R模型使用标准误差度量STDI和STDP

时间:2017-08-04 04:45:55

标签: r sas statistics

我试图对我的数据集中的一些变量进行非常简单的线性回归分析,并发现R和SAS为其模型拟合输出了非常不同的值。我试图退步

spending ~ tenure (in months)

在SAS中,我的代码看起来像

proc reg data=model_data;
model spending = tenure;
output out=&outfile r=resid stdi=stdi_metric;
title 'SAS model';
run; quit;

在R中,我使用以下代码:

modelobject <- lm(spending ~ tenure, data = df)
predictions <- predict(modelobject, interval = "prediction", se.fit = TRUE, level = 1 - alpha) 

然而,我看到的是R中的残差(因此拟合系数截距项)与SAS。我不是把它们包括在这里,因为它是机密数据,但足以说它们不匹配。但是,当我将SAS代码更改为

时,它们会匹配
proc reg data=model_data;
model spending = tenure;
output out=&outfile r=resid stdp=stdp_metric; * <-- this is the only change!
title 'SAS model';
run; quit;

我在这里得到相同的残差和系数。为什么会这样?根据我的理解, stdp stdi 是与置信度和预测间隔相关的标准误差(请参阅这些lecture notes)。但是,在置信区间和预测区间之间切换不应该在理论上改变您的模型拟合(在R中尤其如此,因为您将modelobject传递到{{1} {{1}功能)。

那么,当predict()指标切换为stdi时,为什么SAS残差会发生变化?此外,在一个项目的更广泛的背景下,我正在尝试将旧的SAS宏转换为R-这个问题。我如何复制适合R的相同模型(使用SAS stdp使用{{ 1}})?

我还咨询了SAS manuals on definitions of these metrics and PROC REG,但在PROC REG更改为stdi时无法找到有关模型拟合实施更改的原因。

2 个答案:

答案 0 :(得分:1)

STDI个人预测值的标准误差,而STDP平均预测值的标准误差。

因此,为了解决此问题,您需要在se.fit=F函数中使用predict(),您应该获得与使用STDI选项的SAS代码完全相同的结果(目前在您的R代码中se.fit = TRUE所以它使用预测均值的标准误差,同时预测结果,相当于SAS中的STDP选项)。希望这有帮助!


如果它解决了您的问题,请不要忘记告诉我们:)

答案 1 :(得分:0)

找出问题所在。实际上你必须在回归输出窗口中向下滚动,因为最新的结果是在窗口的下方。我学到了很好的经验法则 - 我总是检查是否有额外的输出,如果你正在查看最新的结果。这与我的宏参数中的语法错误导致我同时适应两个y目标这一事实相结合,导致了我的错误:

enter image description here