【发布时间】:2017-08-04 04:45:55
【问题描述】:
我正在尝试对我的数据集中的一些变量进行非常简单的线性回归分析,并发现 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 传递到 predict() 函数中)。
那么为什么当stdi 指标切换到stdp 时,SAS 残差会发生变化?此外,这个问题是在我试图将旧 SAS 宏转换为 R 的项目的更广泛背景下提出的——我如何复制适合 R 的相同模型(使用 SAS 的PROC REG 使用stdi)?
我也咨询了SAS manuals on definitions of these metrics and PROC REG,找不到任何关于为什么当stdi 更改为stdp 时模型拟合实现会发生变化。
【问题讨论】:
标签: r sas statistics