R笔记:多重线性回归(一)_模型拟合
转自个人微信公众号【Memo_Cleon】的统计学习笔记:R笔记:多重线性回归(一)_模型拟合。
多重线性回归模型的最终建立不仅仅拟合个方程就完事了,还需要进行适用条件的考察、模型的诊断以及改进模型的再评估等。
(1)拟合多重线性回归模型;
(2)适用条件考察:线性、独立性、正态性、同方差性;
(3)模型诊断:强影响点、离群值、杠杆值、多重共线等;
(4)模型改进与再评估。
![](http://n4.ikafan.com/assetsj/blank.gif)
示例
原案例是来示例二分类的logistic回归的。
1989年Hosmer和Lemeshow研究了低出生体重婴儿的影响因素的数据,结局变量为是否分娩低出生体重儿(变量名low,0:低出生体重,即婴儿出生体重<2500克;1:正常),同时给出了每个新生儿的具体体重(bwt,g),考虑的影响(自变量)有:产妇妊娠前体重(lwt,磅)、产妇年龄(age,岁)、产妇在妊娠期间是否吸烟(smoke,0=未吸、1=吸烟)、本次妊娠前早产次数(ptl,次)、是否患有高血压(ht,0=否、1=是)、子宫对按摩、催产素等刺激引起收缩的应激性(ui,0=无、1=有)、妊娠前三个月社区医生随访次数(ftv,次)、种族(race,1=白人、2=黑人、3=其他民族)。
示例来源:SPSS统计分析高级教程/张文彤,董伟主编.—2版.—北京:高等教育出版社,2013.3.
我们选取其中的变量以体重(g)为响应变量示例多重线性回归。这个示例自变量大部分是分类变量,其实可以考虑将体重转换成二分类变量进行二分类的logistic回归。或者干脆直接考虑带有协变量的多因素方差分析,当然多因素方差分析只是多重线性回归模型的一种变体而已。数据可能并不太合适,我们只做步骤的演示,不过现实案例又有多少完全理想的数据呢。
library(haven)
lmdata<-read_sav("D:/Temp/logistic_step.sav")
lr1<-lmdata[,3:11] #lr1<-lmdata[,-1:-2]
library(car);library(carData)
scatterplotMatrix(lr1) #拟合直线、均值或中位值的拟合线及方差范围线,相当于默认的scatterplotMatrix(lr1,smooth = TRUE,regLine = TRUE,ellipse = FALSE).很多函数可以实现散点图矩阵的绘制,比如scatterplotMatrix {car}、pairs {graphics}、scatterplot {SSRA}、scatterplot {miscor}、pairsVIM {VIM}、sel.pairs {SeleMix},推荐使用scatterplotMatrix {car}:provides a convenient interface to the pairs function to produce enhanced scatterplot matrices, including univariate displays on the diagonal and a variety of fitted lines, smoothers, variance functions, and concentration ellipsoids. spm is an abbreviation for scatterplotMatrix.
![](http://n4.ikafan.com/assetsj/blank.gif)
更重要的是各个自变量与因变量以及各个自变量间的关系都可以通过散点图矩阵大体判断。由于自变量较多,散点图矩阵较大,各散点图细节展示不足。年龄、孕前体重、早产次数、随访次数与新生体重的线性关系我们可以进一步展示:
lr2<-lmdata[,c("age","lwt","ptl","ftv","bwt")]
scatterplotMatrix(lr2,smooth=TRUE,regLine=TRUE,ellipse=TRUE)
![](http://n4.ikafan.com/assetsj/blank.gif)
直观来看,年龄与新生儿体重关系并不明显,可能存在异常值;孕前体重与新生儿体重存在一定的相关关系,但相关强度不大;大部分个体早产次数集中在0次和1次,2次仅2例,3次只有1例,宜合并为二分类变量进行分析;随访次数与新生儿体重的关系也不密切;另各自变量间可能存在一定的相关关系,关系也并不是太密切,当然这些需要我们做检验。
lmdata$race<-factor(lmdata$race)
lmdata$smoke<-factor(lmdata$smoke) #二分类变量赋值0和1,即使不进行因子设置而是直接以连续变量纳入,结果是一致的,只是参照水平可能会变化
lmdata$ptl <-ifelse(lmdata$ptl>0,1, 0) #修改lmdata数据框中的变量ptl赋值,当原ptl值>0时,新的ptl赋值为0,其他情况下(原ptl<=0)时则赋值为0
lmdata$ptl<-factor(lmdata$ptl)
lmdata$ht<-factor(lmdata$ht)
lmdata$ui<-factor(lmdata$ui)
lmfit<- lm(bwt~age+lwt+race+smoke+ptl+ht+ui+ftv,data=lmdata)
summary(lmfit) #提取回归分析结果
![](http://n4.ikafan.com/assetsj/blank.gif)
结果显示:年龄(P=0.755)、早产史(P=0.135)及随访次数(P=0.946)对新生儿体重的影响无统计学意义;孕前体重每增加1磅,新生儿体重增加3.73g(P=0.033);相比白人,黑人的新生儿体重轻474.53g(P=0.002),其他种族的新生儿轻359.14g(P=0.002);吸烟者比不吸烟者的新生儿体重轻329.13g(P=0.003);高血压患者比不患高血压者的新生儿体重轻564.16g(P=0.006);具有应激性者比没有应激性者的新生儿体重轻454.07g(P=0.001)。
anova(lmfit) #以方差分析表形式呈现的各个变量的总体检验结果(主效应检验结果)
![](http://n4.ikafan.com/assetsj/blank.gif)
方差分析表跟参数估计表的检验结果是一致的。
建立回归方程实际上是整个回归分析里面最简单的一部分,但数据适不适合采用线性回归,回归模型对数据的拟合性如何还需要更进一步的考察验证。我们将在下一次的R笔记中再示例多重线性回归适应条件(线性、独立性、正态性、同方差性)的考察。
转自个人微信公众号【Memo_Cleon】的统计学习笔记:R笔记:多重线性回归(一)_模型拟合。
待续……