【问题标题】:Scale back linear regression coefficients in R from scaled and centered data从缩放和居中的数据中缩减 R 中的线性回归系数
【发布时间】:2013-01-08 17:40:21
【问题描述】:

我正在使用 OLS 拟合线性模型,并使用 R 中的函数 scale 缩放我的回归量,因为变量之间的度量单位不同。然后,我使用 lm 命令拟合模型并获得拟合模型的系数。据我所知,拟合模型的系数与原始回归变量的单位不同,因此必须先按比例缩小,然后才能对其进行解释。我一直在寻找一种直接的方法来做到这一点,但找不到任何东西。有人知道怎么做吗?

请看一下代码,你能帮我实现你的建议吗?

library(zoo)
filename="DataReg4.csv"
filepath=paste("C:/Reg/",filename, sep="")
separator=";"
readfile=read.zoo(filepath, sep=separator, header=T, format = "%m/%d/%Y", dec=".")
readfile=as.data.frame(readfile)
str(readfile)
DF=readfile
DF=as.data.frame(scale(DF)) 
fm=lm(USD_EUR~diff_int+GDP_US+Net.exports.Eur,data=DF)
summary(fm)
plot(fm)

对不起,这是数据。

http://www.mediafire.com/?hmcp7urt0ag8187

【问题讨论】:

  • 据我所知,我认为在拟合线性模型之前不需要缩放它们。如果我理解错了,你还能举一些可重复的例子吗?
  • 嗨,总的来说,您是对的,但我了解到,当存在多重共线性迹象或回归变量之间的测量单位有很大差异时,这是一种很好的做法。我在一个玩具示例中工作,我使用 USD.EUR 作为响应,使用 GDP、出口、进口等作为回归量。拟合模型存在高度的多重共线性。可能会测试许多不同的技术,但现在我想检查一下。
  • @liuminzhao 你没有,但如果你想比较效应大小以帮助解释模型、变量的重要性等,那么如果这些变量是在不同的尺度上测量的,那么标准化它们是一种实现通用比较尺度的方法。
  • @user1228124 和加文。感谢您的建议。学到了很多。

标签: r transform regression


【解决方案1】:

如果我理解您的描述(不幸的是,目前没有代码),您将获得 Y ~ As + Bs*Xs 的标准化回归系数,其中所有“s”项都是缩放变量。然后,这些系数是 Y 的标准偏差尺度上的预测变化,与 X 的一个标准偏差 X 的变化相关。scale 函数将记录 hte 缩放对象的属性中的平均值和标准偏差。如果没有,那么您将在控制台日志中的某处获得这些估计。对于 X 中的 dX 变化,估计的 dY 变化应为:dY*(1/sdY) = Bs*dX*(1/sdX)。预测应该是这样的:

Yest = As*(sdX) + Xmn + Bs*(Xs)*(sdX)

您可能不需要标准化 Y 值,我希望您不需要标准化,因为这样可以更轻松地处理 X 均值的调整。如果您想要实施和检查答案,请放入一些代码和示例数据。我认为@DanielGerlance 说乘以 SD 而不是除以 SD 是正确的。

【讨论】:

  • 感谢您的回答我已经发布了我的代码。我不清楚将系数乘以它们的样本标准偏差是否足以缩小系数。我正在使用截距,但结果是估计 0 和 p 值 1 你能帮我解释一下吗?
  • 这样一个模型中的截距(你缩放了 Y 和 X)应该是零,因为你从缩放过程中的所有内容中减去了平均值。这就是为什么我在修改后的表达式中添加了手段。 (您还需要加回 Y_mean。)Wald 统计量用于测试 theIntercept 为零,并且它是,因此 p 值为 1 是有道理的。这是代码而不是数据。跨度>
  • 谢谢,我终于只缩放了 X 并将系数乘以 sds。
  • 我正在使用此答案对回归进行反向转换/除垢,但我不相信此答案中的公式完全正确。请参阅我的新答案以获得不同的解决方案。
【解决方案2】:

如果您使用带有默认参数的 scale 函数,那么您的回归量将居中(减去它们的平均值)并除以它们的标准差。您无需将系数转换回原始单位即可解释系数:

在其他所有条件保持不变的情况下,平均而言,其中一个回归变量的一个标准差变化与对应于该回归变量系数的因变量的变化相关。

如果您在模型中包含截距项,请记住截距的解释会发生变化。现在,估计的截距代表所有回归变量都处于平均水平时因变量的平均水平。这是从每个变量中减去平均值的结果。

要解释非标准差项中的系数,只需计算每个回归量的标准差并乘以系数。

【讨论】:

    【解决方案3】:

    要从使用缩放预测变量和非缩放响应变量完成的回归中去缩放或反向转换回归系数,截距和斜率应计算为:

    A = As - Bs*Xmean/sdx
    B = Bs/sdx
    

    因此回归是,

    Y = As - Bs*Xmean/sdx + Bs/sdx * X
    

    在哪里

    As = intercept from the scaled regression
    Bs = slope from the scaled regression
    Xmean = the mean of the scaled predictor variable
    sdx = the standard deviation of the predictor variable
    

    如果Y 也进行了缩放,则可以调整此设置,但您似乎最终决定不对您的数据集执行此操作。

    【讨论】:

    • 这似乎是正确的,其他两个是错误的(我认为)-您确实应该将缩放系数除以缩放因子。斜率项为Bs/s*X = Bs*(X/s)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 2018-03-05
    • 2011-09-10
    • 2018-01-02
    • 1970-01-01
    • 2019-10-15
    相关资源
    最近更新 更多