【问题标题】:SAS vs R model fit discrepancy using standard error metrics STDI and STDP使用标准误差度量 STDI 和 STDP 的 SAS 与 R 模型拟合差异
【发布时间】: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;

我在这里得到相同的残差和系数。为什么会这样?据我了解,stdpstdi 是与置信区间和预测区间相关的标准误差(参见这些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


    【解决方案1】:

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

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


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

    【讨论】:

    • 这对了解很有帮助,但它并没有改变我的任何 R 输出。我实际上弄清楚了发生了什么-这是一个新手 SAS 错误。我会回答我自己的问题,但对有用的信息投赞成票。
    【解决方案2】:

    弄清楚对我来说是什么问题。您实际上必须在回归输出窗口中向下滚动,因为最新结果在窗口下方。我学到的 SAS 中的良好经验法则 - 始终检查是否有额外的输出以及您是否正在查看最新结果。再加上我的宏参数中存在语法错误,导致我同时拟合两个 y 目标,这导致了我的错误:

    【讨论】:

      猜你喜欢
      • 2016-05-24
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 2015-10-12
      • 2017-05-29
      • 2020-08-20
      相关资源
      最近更新 更多