回归模型大杂烩-多重线性回归

学术   2024-08-25 07:29   陕西  

回归模型大杂烩-多重线性回归

1模型应用场景:当我们需要分析多个自变量与1个因变量之间的线性关系时,可采用多重线性回归进行分析。

2模型变量要求

自变量:多个自变量,既可以是连续变量(如年龄),也可以是二分类变量(如性别),无序多分类或有序多分类变量均可。

因变量:1个因变量,需为连续变量(如收缩压)。

3模型表达式和解读:假设因变量为y,自变量为x1-xn,则模型表达式如下:y=b1*x1+b2*x2+...+bn*xn+截距+e

b1、b2。。bn为偏回归系数,表示在其他变量不变的情况下,自变量每变化1个单位对y的影响。当然,此时的b1-bn为非标准化回归系数,若想得到标准化回归系数,可将原始数据进行标准化后重新拟合模型

截距:又称常数项,表示自变量均为0时,y的估计值;

e:代表残差(又称随机误差),是模型无法捕捉的部分。

4.模型应用条件

(1)线性:即自变量x与因变量y(或残差)呈线性关系

(2)独立性:即残差之间相互独立。

(3)正态性:即因变量符合正态分布,严格来说指多重线性模型的残差符合正态分布。    

(4)方差齐性:即方差相等,指对于每一个x对应的因变量y的方差相等。那么对于多重线性模型,检验模型的残差的方差是否相等。

5.多重共线性:即多个自变量之间存在高度相关,可能引起各变量估计系数出错,甚至导致模型无法收敛。

常用共线性诊断指标:

方差扩大因子(Variance Inflation Factor,VIF):指由于共线性所导致的参数估计值的方差增加量,当VIF大于10,通常表示共线性很强

容忍度(Tolerance, TOL):方差扩大因子VIF的倒数。当TOL小于0.1,通常表示共线性很强

条件指数(condition index):当条件指数大于10,可认为存在共线性;条件指数大于30,可认为存在严重共线性

6.样本量要求:纳入至少模型自变量数10倍以上的样本量,如自变量有10个,则总观测数至少有100个。

         

 

目的:以性别、年龄、省份、城乡、婚姻、文化程度、个人年收入为自变量;收缩压为因变量。采用多重线性回归模型进行分析收缩压的影响因素。    

变量赋值表

变量

变量类型

赋值

属于

性别

2分类

1=;2=

自变量

年龄

连续

                 

 

省份

无序多分类

21/23/32/37/41/42/43/45/52

城乡

2分类

1=城市,2=农村

婚姻

无序多分类

1~5

文化程度

有序多分类

1~5

个人年收入

连续

                 

 

收缩压

连续

                 

 

因变量

SAS实践代码:

/*变量名可以设定为中文*/

option validvarname=any;

/*先导入数据*/

PROC IMPORT OUT= mydata

  DATAFILE= "E:\02学习\经验\01医学统计\回归模型大荟萃-多重线性回归\多重线性回归.xlsx"

  DBMS=xlsx  REPLACE;

  GETNAMES=YES;

  sheet="sheet1" ;

quit;

/*拟合模型*/

proc genmod data=mydata desc;

  class 性别 省份 城乡 婚姻;/*分类变量放到class语句后*/    

  model 收缩压 =性别 年龄 省份 城乡 婚姻 文化程度 个人年收入/dist=Normal link=   Identity;

quit;

上图展示了模型纳入的观测数,自动去除了含有缺失值的观测,最终纳入分析3474。

   

结果解读:如性别以性别=2为参照,性别=1的平均收缩压增加3.3453。

R实践代码:

#导入数据

.libPaths()#查看R包位置.libPaths("D:/Program File/R/R-4.3.2/library")#定义包安装位置setwd("E:/02学习/经验/01医学统计/回归模型大荟萃-多重线性回归")#设置工作空间getwd()#加载工作空间library(readxl)mydata<-read_excel("多重线性回归.xlsx")

#分类变量因子化

a<-c("性别","省份","城乡","婚姻")#填入需要转化的变量mydata[,a]<-lapply(mydata[,a],as.factor)#转因子

#设置分类变量的参照组

mydata$性别<-relevel(mydata$性别, ref="2")mydata$省份<-relevel(mydata$省份, ref="52")

#建立模型

#方法1

fit1<-glm(收缩压~性别+年龄+省份+城乡+婚姻+文化程度+个人年收入,data=mydata,family=gaussian)fit1summary(fit1)

结果解读:上述R结果同样提示删除了1015个观测。并且估计的结果与SAS一致。但是无法给出bata值的置信区间。    

#方法2

fit1<-lm(收缩压~性别+年龄+省份+城乡+婚姻+文化程度+个人年收入,data=mydata)fit1summary(fit1)

#我们可以采用epiDisplay包计算置信区间

install.packages("epiDisplay")library(epiDisplay)result<-regress.display(fit1,                        decimal = 3)#保留3位小数

#将计算结果保存为table    

table<-result[["table"]]#导出table为csv文件table<-print(table)write.csv(table,file="table.csv")

   



本期的原始数据

多重线性回归.xlsx


本公众号致力于分享实用的医学科研干货和热点科研文章共享平台,如果您有任何医学科研相关问题或经验分享,可以私信我!

谢谢阅读,以上均为个人在科研实践过程中的一些做法,如有错误敬请指正!!!



End




关注我获得

更多精彩





流病统计与科研学习笔记
流行病与卫生统计学专业主要分享基于SAS、R以及其他统计软件实现各种统计学方法和结果绘图,提高自己的学习能力
 最新文章