从缩放和居中数据缩放R中的线性回归系数

时间:2013-01-24 20:38:14

标签: r transform regression

我使用OLS拟合线性模型,并使用R中的函数比例缩放我的回归量,因为变量之间的度量单位不同。然后,我使用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

3 个答案:

答案 0 :(得分:9)

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

其他一切保持不变,平均而言,其中一个回归量的一个标准偏差变化与对应变量的变化相关联,该变量对应于该回归量的系数。

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

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

答案 1 :(得分:4)

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

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

你可能不应该需要标准化Y值,我希望你没有,因为它使得处理X的平均值的调整更容易。如果您想要实现和检查答案,请输入一些代码和示例数据。我认为@DanielGerlance说要加倍而不是除以SD。

答案 2 :(得分:1)

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

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也已缩放,则可以调整此项,但您似乎最终决定不使用数据集。