[统计]_数据中心化和标准化对线性回归结果的影响

发布于:2022-12-07 ⋅ 阅读:(377) ⋅ 点赞:(0)

        很多同学在做线性回归的时候,不明白到底是直接那原始数据跑,还是要用中心化的数据跑,或者还是用标准化的数据跑。先说结论,相对于原始回归模型,中心化回归模型只是截距发生了改变(相当于平移到原点),标准化回归模型截距和斜率都有改变,但三个模型的拟合程度都是一致的,就是自变量对因变量的解释程度没有变化。

        现在我们就具体看一下中心化和标准化对线性回归有哪些影响。

        中心化其实就是把每个数据减去那列的均值,标准化其实就是对中心化后的数据再除以数据的标准差。在R里面中心化和标准化都可以用scale()计算, 只是在参数上会有一些变化。

        数据中心化:scale(data,center=T,scale=F)

        数据标准化:scale(data,center=T,scale=T)

        还是以著名的iris数据集为例,因为数据集最后一列是字符型数据,所以我们取前四列数值型数据

data=iris[1:4]

        数据集长这样,是一个150行4列的数据集。

         我们对它进行回归分析

model_raw=lm(Sepal.Length~Sepal.Width+Petal.Length+Petal.Width,data=data)
summary(model_raw)

        这是它的结果

         我们先不解读结果,继续构建中心化和标准化后的数据集,先构建中心化数据集

data_center=scale(data,center=T,scale=F)
model_center=lm(Sepal.Length~Sepal.Width+Petal.Length+Petal.Width,data=data_center)
summary(model_center)

        这是中心化数据集的结果

        这里注意,e-01其实就是10的-1次方,所以我们中心化数据集和原始数据集的回归结果只在截距项(intercept)上有差异,在斜率(回归系数)上是不存在差异的,而且我们也可以看到两个模型在残差(Residuals),R^2(R-squared),F值(F-statistic)和p值(p-value)上都没有差异。而且我们可以看到,中心化数据集中,截距项小到可以忽略不计,e-16就是10的-16次方。所以我们知道,其实中心化只改变的截距项,也就是相当于将回归方程平移到了原点附近。

        继续构建标准化的数据集

data_scale=data.frame(scale(data,center=T,scale=T))
model_scale=lm(Sepal.Length~Sepal.Width+Petal.Length+Petal.Width,data=data_scale)
summary(data_scale)

        这是标准化数据集的结果

         这时我们可以看到,这个回归方程的截距项和斜率(回归系数)都改变了,但R^2(R-squared),F值(F-statistic)和p值(p-value)上都没变化,说明标准化回归模型的拟合程度其实和原始回归模型,以及中心化回归模型是一致的,也可以理解为在三个方程上,自变量对因变量的解释程度是一致的。甚至我们可以看到,虽然标准化回归模型的斜率变化了,但其实对斜率的t检验结果和原始回归模型,以及中心化回归模型也是一致的。

        那么标准化有什么意义呢,标准化处理相当于消灭了量纲,比如身高的单位是“米”,而体重的单位是“斤”,我们做中心化时,只是减掉了均值,单位还是存在,而进行标准化后,就消灭了量纲的差异所带来的影响。

        所以话又说回来,如果我们追求模型的可解释性,比如“身高增加1米,体重增加多少斤”这样带有量纲的问题,其实直接用原始数据或者中心化数据计算也没有问题。

        最后希望今天的内容对大家有帮助。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到