1.临床预测模型——线性回归

本文介绍了相关和线性回归的基本概念,包括相关系数、直线相关、回归方程及其应用,强调了相关关系与因果关系的区别,以及简单和多重线性回归的条件和检验方法。还讨论了正态性、独立性和方差齐性的重要性,以及如何处理多重共线性问题。
摘要由CSDN通过智能技术生成

基本概念:

相关与线性回归是两个不同的概念。

1.相关

相关:当变量X增加时,变量Y也随着增加或减少,这种现象称为相关。说明两个变量间存在相关关系

变量数值的分布类型不同,相关可以分为:

  1. 直线相关;linear correlation
  2. 秩相关;rank correlation
  3. 列联相关;contingency correlation

当变量数值不符合正态性或为等级资料时,宜采用秩相关。

列联相关针对的是分类变量。

直线相关(重点):

1.相关系数

直线相关的正确应用:

  1. 相关关系不等于因果关系;
  2. 相关系数只是衡量变量之间的相关程度,弱相关不一定表明变量之间没有关系;
  3. 直线相关中,极端值对相关系数的影响较大;
  4. 注意相关关系成立的数据范围,在数据范围之外进行外推应谨慎,通常可以内推;
  5. 注意数据的杂间性,可能存在虚假相关。

2. 回归

回归:用回归方程表示变量之间的依存关系。

a的意义:当自变量X=0时,因变量Y的估计值,叫做截距(intercept),a一般没有实际意义,因为X一般不为0。

b,斜率(slope),也称为回归系数(regression coefficient),表示自变量每增加一个单位,因变量Y平均改变b个单位。

简单线性回归的条件:

1.正态性:给定自变量X,因变量Y符合正态分布

2.独立性:各观测的因变量Y之间应符合独立性

3.线性:自变量X与因变量Y之间应符合线性关系

4.方差齐性:因变量的方差不会随着自变量X的改变而改变。

简单线性回归

案例:利用women数据集进行展示:探索30-39岁女性身高和体重之间的关系

str(women)

简单线性回归可以使用基础包中的lm()函数,glm()函数或者rms包中的ols()函数进行拟合

1. 先进行相关性分析

cor(x=women,method = c("pearson"))

X指定分析的数据集,,method指定进行的分析方法;pearson相关是要求两个变量都服从正态分布,spearman相关系数和kendall's Tau相关系数都是非参数的相关度量,对数据分布没有特殊要求,或者等级资料。

根据中心极限定理:当每组样本量>=50时,可以认为样本的均数近似服从正态分布。所以可以选择person相关,使用函数cor()计算样本的相关系数,method=“pearson”或“spearman”参数。

提示存在高度正相关,r=0.995。

r>=0.7为高度相关,0.4<=r<0.7为中度相关,r<0.4为低度相关(r应该是绝对值大小)

对相关系数进行检验:

cor.test(x=women$height,y=women$weight,method = c("pearson"))

2. 简单线性回归

lmfit<-lm(formula=weight~height,data=women)
summary(lmfit)

回归系数Estimate,回归系数的标准误Std.Error,t检验量,P值

其他重点关注的指标:

R-squared决定系数:0.991,表示模型解释因变量weight变异的百分比,越大越好。也即是weight的99.1%的变异被模型所解释,剩下的0.9%的变异是模型无法解释的,由残差引起的。但是\mathrm{R^{2}}会受自变量个数的影响,夸大自变量对因变量变异的解释程度,自变量越多,\mathrm{R^{2}}越大。Adjusted \mathrm{R^{2}}调整了自变量个数对结果的影响,一般小于\mathrm{R^{2}}

F统计量:对线性回归方程进行统计检验。

详细可以参考:5. 基础统计方法——关联性分析/简单线性回归-CSDN博客

3.条件检验

线性条件:

plot(x=women$height,
     y=women$weight,
     xlab="height(单位:英寸)",
     ylab="weight(单位:磅)",
     cex=1.5,cex.axis=1.5,cex.lab=1.5)

正态性:

install.packages("mvnormtest")
library(mvnormtest)
mshapiro.test(t(women))

进行双变量正态性检验可以利用mvnormtest包中的msharpiro.test()函数,msharpiro.test()函数不能处理数据框,只能处理矩阵,需要使用t()将数据集转化为矩阵。

p=0.0046<0.05,即变量weight,height并不符合双变量正态性。数据不符合双变量正态性,若不是严重偏态,使用简单线性回归,结果仍然是稳健。

检测分布特征:

library(car)
scatterplotMatrix(x=women,main="Scatter Plot Matrix",cex=1.5,cex.axis=1.5,cex.lab=1.5)

par(mfrow=c(2,2))
plot(lmfit,cex=1.5,cex.axis=1.5,cex.lab=1.5)

左上角的图用来判断线性关系,随着预测值fitted values的变化,残差residuals不稳定说明可能存在非线性关系。

左下角检测方差齐性,若图中线段两侧的散点随机分布,则说明方差齐性。

右上角的QQ图,确定残差是否分布直线的两侧,判断是否满足正态性。

多重线性回归

案例:前列腺癌的数据(示例可下载)

load("prostate.Rdata")
str(prostate)
prostate<-prostate[,1:9]
summary(prostate)
head(prostate)

10个变量,分表表示lcavol 肿瘤体积大小对数值

lweight前列腺重量的对数值

lbph良性前列腺增生量的对数值

svi 表示是否受侵犯

lcp表示薄膜穿透度的对数值

gleason表示Gleason评分

pgg45表示Gleason评分在4,5多占的百分比

lpsa表示PSA值得对数值,因变量

train表示一个逻辑值(True和False,用来区分训练数据和测试数据。)

!!!!只要不是高维数据,在正式统计分析之前均应该使用str()函数,summary()函数,head()函数和names()函数,对数据全貌做较为全面得了解。

1.相关性分析

cor.prostate<-cor(x=prostate,method = c("pearson"))
round(cor.prostate,3)

相关性分析可视化

library(corrplot)
corrplot(cor.prostate,method = "ellipse",tl.cex=1.5,tl.col="black",cl.cex=1.5)

method选定为椭圆,函数输入相关性的结果。

相关性热图

#install.packages("ggcorrplot")
library(ggcorrplot)
ggcorrplot(cor.prostate,method="circle",
           hc.order=TRUE,hc.method = "ward.D",
           outline.color = "white",ggtheme = theme_bw(),
           type="upper",lab = TRUE,lab_size = 6,
           colors = c("#6D9EC1","white","#E46726"),
           tl.cex = 18,tl.col="black",tl.srt = 45)

 method设置图形为圆形,

hc.order=T,hc.method="ward.D"表示对变量进行聚类,聚类的算法为ward.D。如果分析的数据变量为代谢组学数据或基因组学数据,聚类就非常重要

outline.color设置外边框颜色,ggtheme设置图形格式,type设置表示只显示上半部分结果,lab=T,lab_size=6设置显示相关系数,字体大小。colors设置图例的颜色。

2. 多重线性拟合

multifit<-lm(formula=lpsa~lcavol+lweight+age+lbph+svi+lcp+gleason+pgg45,data=prostate)
summary(multifit)
anova(multifit)

anova()函数可以查看方差分析表

其结果与回归系数表相似,罗列了各自变量是否存在统计学意义。

3.条件检验

plot(multifit,cex=1.5,cex.axis=1.5,cex.lab=1.5)

左上角,残差没有与预测值fitted values由明显的关联,说明呈现线性。

左下角,线段两侧散点随机分布,说明方差齐

右上角,基本在直线上符合正态性。

4.多重共线性

vif(multifit)

方差膨胀因子VIF小于10,即可判断该自变量不存在多重共线性。若大于10,说明存在共线性问题,不可以直接拟合,需要使用降维或者岭回归的方式处理。

5.绘制实际值,预测值图

plot(x=prostate$lpsa,y=predict(multifit),xlab="实际值",ylab="预测值")
plot(x=prostate$lpsa,y=fitted(multifit),xlab="实际值",ylab="预测值")

可以发现实际值与预测值较为一致,说明模型的拟合效果较好。

回归与相关的区别:

  1. 相关系数r没有单位,回归系数β有单位;
  2. 相关表示相互关系,回归表示依存关系;
  3. 对资料的要求不同,当变量X和Y都是随机变量时,可以进行相关和回归分析,当变量Y时随机变量(变量X可控制)时,理论上只能做回归,不能做相关分析。比如变量X为性别。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值