R语言|临床预测模型(二):简单/多重线性回归

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

R语言|临床预测模型(二)

一般线性模型

(一)线性回归(Linear regression)

根据自变量数目多少,可分为简单线性回归多重线性回归,只有一个自变量即为简单线性回归,多个自变量即为多重线性回归。相较于简单线性回归,多重线性回归更为可靠,但仍可能出现欠拟合状况,且并非纳入自变量越多越好。

1. 概述
(1)相关
  • 相关 ≠ 线性回归

    • 相关:不确定性的相关关系,指两个变量在宏观上存在关系,但未精确到数学函数关系,当变量X增加时,变量Y随着增加或者减少,但变量Y的具体取值不能由变量X确定,可分为正相关、负相关和零相关。

      image-20240824194818773

    • 线性回归:确定性的数学函数关系。

  • 根据变量数值分布类型不同,相关可分为直线相关、秩相关、列联相关等。

    • 秩相关:当变量的数值不符合正态性或为等级资料时,宜采用秩相关,主要利用变量数值的秩次替代原始数据进行相关分析。

    • 列联相关:针对于分类变量。

    • 直线相关:可计算皮尔森(Pearson)相关系数 r,r > 0为正相关,r < 0为负相关,r = 0为零相关或无相关,r绝对值越大相关程度越大。

      image-20240824195749200

      r 的假设检验公式(p<0.05则存在统计学意义):

      image-20240824203008814

      注意:

      • 相关关系不等于因果关系

      • 相关系数只是用于衡量变量间的相关程度,弱相关不一定表明变量间没有关系

      • 在直线相关中,极端值对相关系数的影响较大

      • 在相关关系成立的数据范围之外外推应谨慎,通常可内推

      • 数据的间杂性可能存在虚假相关

        image-20240824203507388

        (a)样本甲和样本乙两个变量均为正相关,但混合在一起则显示无相关

        (b)样本甲乙两变量均无相关,但混合在一起显示存在正相关

(2)回归
  • 回归:用回归方程表示变量间的依存关系

    image-20240824204234408

    a 为截距,其单位与因变量 Y 相同,在临床研究中通常没有实际意义,因为自变量X大多取不到 0

    image-20240824204743061

    b 为斜率,也称为回归系数

    image-20240824204900367

    简单线性回归中,自变量 X 的回归系数 b 的假设检验(p<0.05存在统计学意义)

    image-20240824205831030

    image-20240824210023679

    RMSE 在排除了自变量 X 对因变量 Y 的线性影响后,用于衡量因变量 Y 随机波动大小,可以反映数据的离散化程度,在多因素逐步回归分析中作为自变量 X 引入和剔除的标准之一。

    image-20240824210041653

  • 简单线性回归分析的数据需满足以下条件:

    • 正态性:给定自变量 X,因变量 Y 符合正态分布,即双变量正态分布
    • 独立性:各观测的因变量 Y 值之间应符合独立性,传染病相关研究通常不符合
    • 线性:自变量 X 与因变量 Y 之间应符合线性关系,可通过绘制散点图判断是否符合线性假设
    • 方差齐性:因变量 Y 的方差不会随着自变量 X 的变化而变化
  • 在临床工作中,多重线性回归更为常见

2. 线性回归实战

对于相关和线性回归,一般是从研究不确定性的相关关系开始,再将其逐步完善为确定性的数学函数关系。

(1)简单线性回归
a. 回归拟合

简单线性回归可以使用 lm()glm()rms包中的 ols() 进行拟合,结果完全等价。

# 查看示例数据 women,共2个变量(height、weight),15个研究对象
str(women)

# 相关分析(Pearson),不指定 y 则默认为自身
cor(x=women, method = c("pearson"))

# 对 Pearson 相关系数 r 做统计学假设检验
cor.test(x=women$height, y=women$weight, method = c("pearson"))

# 简单线性回归
lmfit <- lm(formula=weight~height, data=women)
summary(lmfit)

image-20240824215009716

image-20240824215942007

b. 回归检验

由于简单线性回归具有一定的适用条件,此处对其进行了判断。

# 线性假定
plot(x=women$height,
    y=women$weight,
    xlab="height",
    ylab="weight")

# 双变量正态性检验
# install.packages("mvnormtest")
library(mvnormtest)
# mshapiro.test 无法处理数据框,只能处理矩阵,故需要先使用 t() 将其转换为矩阵
mshapiro.test(t(women)) 
# p<0.05说明不符合双变量正态分布

image-20240824221353148

当数据不符合双变量正态性时,如果其不是严重偏态,仍可以使用简单线性回归。

# 查看变量的分布情况
library(car)
scatterplotMatrix(x=women, main="Scatter Plot Matrix")

image-20240824221917014

# 双变量正态性检验,生成线性回归模型诊断图
par(mfrow=c(2,2))
plot(lmfit)

image-20240824222415561

  • 残差与拟合值图 (Residuals vs Fitted)

    • 目的:检查线性关系假设和均匀性假设(残差的等方差性)。
    • 图形解释
      • 横轴是拟合值(Fitted Values),纵轴是标准化残差(Residuals)。
      • 如果模型正确指定,图中的点应该随机分布在横轴附近,没有明显的模式。
      • 如果图中出现曲线模式,说明模型可能有非线性关系未捕捉。
      • 如果残差的分散程度随拟合值增加或减少,可能表明异方差性问题。
  • 正态 Q-Q 图 (Normal Q-Q)

    • 目的:检查残差是否符合正态分布的假设。

    • 图形解释

      • 横轴是标准正态分布的理论分位数,纵轴是样本残差的分位数。
        • 如果残差符合正态分布,图中的点应该大致沿着一条直线分布。
        • 如果点偏离直线,特别是在两端,说明残差可能不是正态分布,可能存在重尾或轻尾数据。
  • 标量化残差与杠杆图 (Scale-Location or Spread-Location Plot)

    • 目的:进一步检查**残差的均匀性(方差齐性)**假设。
    • 图形解释
      • 横轴是拟合值(Fitted Values),纵轴是标准化残差的平方根(Square Root of Standardized Residuals)。
      • 理想情况下,点应随机分布,且呈水平带状分布。
      • 如果残差随着拟合值变化而呈现出某种模式,可能表明异方差性问题。
  • 杠杆值与标准化残差图 (Residuals vs Leverage or Cook’s Distance Plot)

    • 目的:识别可能对模型有过度影响的数据点(高杠杆点或异常值)。
    • 图形解释
      • 横轴是杠杆值(Leverage),纵轴是标准化残差。
      • 该图显示哪些点对模型拟合影响较大(即,离群点或影响点)。
      • 图中会标示出 Cook’s 距离(Cook’s Distance)的轮廓线,点在这些轮廓线之外说明它们对模型有很大影响。

对于方差齐性检验,还可以使用 car 包中的 ncvTest() 函数或 SpreadLevelPlot() 函数。

独立性检验一般基于经验主观判断。

**【总结】**若数据轻微违反双变量正态性或者方差齐性,仍然可以进行简单线性回归,因为简单线性回归对轻微偏态数据、异方差数据的稳健性较好。另外,在本案例中,样本量较小是散点出现轻微偏态的主要原因。若增加样本量,变量height、weight必然满足正态性。

(2)多重线性回归
a. 回归拟合
# 载入示例数据
packageurl <- "https://cran.r-project.org/src/contrib/Archive/ElemStatLearn/ElemStatLearn_2015.6.26.tar.gz"
install.packages(packageurl, repos=NULL, type="source")
data("prostate", package = "ElemStatLearn")

image-20240824224753877

对于非高维数据,可以在正式统计分析前,使用 str()summary()head()names()查看数据全貌信息。

image-20240824225109160

# 各变量相关性检验
cor.prostate <- cor(x=prostate, method = c("pearson"))
round(cor.prostate, 3) # 保留三位小数

image-20240824225933051

# 相关性矩阵可视化
library(corrplot)
corrplot(cor.prostate, method = "ellipse") # 选定图形为椭圆

image-20240824230247637

# 其他可视化方法
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 = 4, # 设置显示相关系数,并设定字体大小
          colors = c("#6D9EC1", "white", "#E46726"))

image-20240831152953715

# 多重线性回归,此处为了简便纳入了所有自变量
multifit <- lm(formula = lpsa~lcavol+lweight+age+lbph+svi+lcp+gleason+pgg45, data = prostate)
summary(multifit)

image-20240831154046619

**注意:**由于简单线性回归只有一个变量,其 F 值为 t^2,两者完全等价。

# 使用 anova 查看方差分析表,其结果与回归系数表相似
anova(multifit)
image-20240831154538724
b. 回归检验

在多重线性回归中,也需要对其使用条件进行检验。

par(mfrow = c(2,2))
plot(multifit)

image-20240831154956520

  • 左上角图形用来说明因变量与自变量的线性关系。可以发现,残差值Residuals与预测值Fittedvalues没有明显关联。随预测值Fitted values的变化,残差保持稳定,即说明因变量与自变量之间存在线性关系。
  • 左下角图用来检查方差齐性,其线段两侧散点呈随机分布,说明其方差齐。
  • 右上角图形用来检查残差是否符合正态性,可以发现散点轻微偏离虚线,残差呈轻微偏态。
  • 变量是否满足独立性,一般靠主观判断。
# 使用 lmtest 包中的 bptest 检验方差齐性
# install.packages("lmtest")
library(lmtest)
bptest(multifit)

image-20240831155628663

在多重线性回归中,还应当考虑多重共线性问题。

# 检验多重共线性
# packageurl <- "https://cran.r-project.org/src/contrib/Archive/pbkrtest/pbkrtest_0.4-4.tar.gz"
# install.packages(packageurl, repos=NULL, type="source")
# install.packages("car")
library(car)
vif(multifit)

image-20240831160939345

输出结果为各自变量的方差膨胀因子 VIF,如果小于 5 或者 10 则该自变量不存在多重共线性,如果大于 5 或者 10 则存在多重共线性问题,不可直接拟合模型,应该使用岭回归或其它降维方法。

补充:处理多重共线性的策略

  • 移除变量:如果某些变量之间存在高共线性,可以考虑从模型中移除一些变量。

  • 合并变量:将相关的变量合并为一个新变量,例如,通过计算几个相关变量的平均值。

  • 增加样本量:有时增加样本量可以帮助减少共线性带来的影响,因为更多的数据提供了更多的信息,有助于更准确地估计模型参数。

  • 正则化方法:使用如岭回归(Ridge Regression)或 LASSO 这类引入惩罚项的技术可以有效地处理共线性问题。

# 绘制预测值与实际值散点图,查看模型拟合准确性,以下两种方法结果相同
par(mfrow = c(1,2))
plot(x = prostate$lpsa, y = predict(multifit), xlab = "实际值", ylab = "预测值")
plot(x = prostate$lpsa, y = fitted(multifit), xlab = "实际值", ylab = "预测值")

image-20240831163033585

因变量Ipsa的预测值与实际值较为一致,说明模型拟合准确性较高。

此处也可以计算 RMSE、MSE、MAE 等指标来量化模型的准确性,其计算较为简单。

**【总结】**相关 vs 线性相关

  • 联系:
    • 两者均表示线性关系。
    • 相关系数与回归系数的符号相同,共变方向一致。
    • 假设检验的结果完全等价。
    • 相关系数与回归系数存在数学运算关系。
    • 可以用回归解释相关。
  • 区别:
    • 相关系数没有单位,回归系数有单位,所以相关系数与单位无关,回归系数与单位有关。
    • 相关表示相互关系,回归表示依存关系。
    • 对资料的要求不同:当变量X和Y都是随机变量时,可以进行相关和回归分析;当变量Y是随机变量(变量X可控制)时,理论上只能做回归而不能做相关分析,如变量X为性别时。
回归分析——简单线性回归实例讲解(SPSS) 什么是回归分析? 回归分析是研究自变量与因变量之间数量变化关系的一种分析方法,它主要是通过因变量Y与影响它的自变量Xi(i1,2,3…)之间的回归模型,衡量自变量Xi对因变量Y的影响能力的,进而可以用来预测因变量Y的发展趋势。 ????????????相关分析与回归分析的联系与区别: 联系: 两者均为研究与测度两个或两个以上变量之间关系的方法。 在实际工作中,一般先进行相关分析,计算相关函数,然后建立回归模型,最后用回归模型进行推算或预测。 区别: ✨相关分析研究的都是随机变量,并且不分自变量与因变量; 阅读详情

相关推荐

6.常用统计分析方法——多重线性回归

多重线性回归

Dr_long1996的博客 7456

R语言统计系列|多重线性回归的R实现

简单线性回归: 一个变量(反应变量)随另外一个变量(解释变量)的变化而变化,且呈直线变化趋势,称为简单线性回归多重线性回归(multiple linear regression): 是一种重要的多因素分析方法。其采用回归方程的方式定量描述了一个因变量Y与多个自变量X1、X2、X3…之间的线性关系。 注意:多重线性回归仅涉及一个因变量Y,因此又称为:一元线性回归模型。 今天在整理笔记时,发现手头的N本书和网上的很多资源都混淆了多重线性回归和多元线性回归。 如果模型中包含多个因变

Mrrunsen的博客 3175

如何用R语言线性回归

说明:斜体为R语言代码 01数据准备:下载数据集 在进行线性回归模拟之前,我们需先准备具有线性关系的数据集。 这里以机械工业出版社出版出版的丘祐玮著的《数据科学:R语言实现 (数据科学与工程技术丛书)》中的房屋租赁数据集为例,数据下载网址为https:// raw. GitHubusercontent. com/ ywchiu/ rcookbook/ master/ chapter11/ hous...

weixin_42532898的博客 1万+

R语言回归

1.回归的多面性

小凤的博客 9万+

R语言——(六)、线性回归模型

回归分析(regression analysis)是统计分析中最重要的思想之一 被广泛应用于社会经济现象中变量之间的影响因素分析回归分为:线性回归、非线性回归例1:为了研究家庭月消费支出与月可支配收入之间的关系,可支配收入(income):800,1100,1400,1700,2000,2300,2600,2900,3200,3500 消费支出(consume):594,638,1122,1155,1408,1595,1969,2078,2585,2530 可以发现,income和consum之间具有较强的

hexiaosi_的博客 2万+

利用SPSS进行多重线性回归分析-基础篇

多重线性回归分析简介: 简单线性回归是只考虑单因素影响的预测模型,事实上,影响因变量的因素往往不止一个,可能会有多个影响因素,也就是研究一个因变量与多个自变量的线性回归问题,就用到多重线性回归分析了。 多重线性回归的作用: 1、探索对于因变量具有影响作用的因素; 2、控制混杂因素,评价多个自变量对因变量的独立效应; 3、用已知的自变量来估计和预测因变量的值及其变化。 多重线性回归与多元线性回归 多重线性回归:是指包含两个或两个以上自变量的线性回归模型; 多元线性回归:是指包含两个或两个以上因变量的线性回

qq_39783601的博客 4万+

利用线性回归实现预测例子_线性回归的R实现与结果解读

引言:前面我们学习了最小乘法与直线回归{最小乘法与线性回归},也学习了如何评判直线的拟合效果,以及拟合效果是否具有显著性{线性回归中的R方与R方显著性}。接着我们来实战一下,主要了解一下R语言如何实现线性回归,以及尝试解释线性回归的结果。1. 简单多重线性回归的异同点1.1 简单线性回归多重线性回归参数个数比较:同:者均有一个结局变量(如小鼠体长)。异:简单线性回归仅有一个用于...

weixin_42347763的博客 3405

R笔记:全子集回归 | 最优子集筛选变量挑选

有些教程把最优子集定义为从含相同自变量的个数的所有模型中挑选出最佳的模型组合,比如ABCD四个自变量,可以有2^4=16个模型,其中常数项模型1个,含1个自变量的模型4个(A、B、C、D),含2个自变量的模型6个(AB、AC、AD、BC、BD、CD),含3个自变量的模型4个(ABC、ABD、ACD、BCD),含4个自变量的模型1个(ABCD),分别从含有1、2、3、4个自变量的模型中挑选出最佳的一个模型就可以组成最优子集。在进行模型比较时,R^2、校正的R^2越大,Cp值越小模型越佳。

生信小博士的博客 9627

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

相关与线性回归

Dr_long1996的博客 1370

机器学习中的多重线性回归

摘要:多元线性回归是一种监督学习算法,用于建立因变量与多个自变量之间的关系模型。与简单线性回归不同,它可处理多个预测变量。本文详细介绍了多元线性回归的数学表示、基本假设(如线性性、独立性、同方差性等),并通过Python实现展示了从数据准备、模型训练到评估的全过程。实验使用包含50个样本的数据集,评估指标显示模型R²得分达0.96。文章还分析了系数含义,验证了预测结果,并探讨了该技术在金融、医疗等领域的应用及面临的挑战(如多重共线性),最后对比了简单与多元线性回归的差异。

路漫漫其修远兮,吾将上下而求索 715

R语言多重线性回归实战:从数据清洗到业务可解释模型

多重线性回归是统计建模与业务决策衔接最紧密的基础算法,其核心价值不在于预测精度,而在于参数可解释性、假设透明性与结果可审计性。它基于最小乘原理构建变量间的线性关系,通过系数量化每个自变量对因变量的边际影响,在零售销量预测、成本归因、用户留存分析等场景中不可替代。技术实现上需兼顾R语言特有机制——如`lm()`的隐式哑变量处理、`model.matrix()`的因子编码逻辑、`car::vif()`的共线性诊断,以及四大诊断图对残差结构的工程化解读。本文聚焦真实项目中的17个关键操作节点,覆盖数据加载陷阱、

weixin_34098209的博客 357

R语言多重线性回归实战:从模型诊断到业务可解释落地

多重线性回归(MLR)是统计建模与业务归因分析的基础方法,其核心在于理解变量间线性关系、识别共线性与异方差等模型假设偏差,并确保结果具备业务可解释性。在真实场景中,R语言凭借car::vif()、broom::tidy()、modelr::data_grid()等生态工具,在模型诊断颗粒度、变量筛选工业级支持和What-if推演适配性上显著优于通用编程语言。本文聚焦R环境下MLR的生产级实践路径:涵盖数据预处理中的缺失机制识别与周期性编码、建模时weights与subset参数的业务适配、残差正态性/独立性

weixin_32667955的博客 309

第10章 最小线性回归分析

回归分析是经典的数据分析方法之一,应用广泛。它是研究分析某一变量受到其他变量影响的分析方法,基本思想是以被影响变量为因变量,以影响变量为自变量,研究因变量与自变量之间的因果关系。本章主要介绍最简单最常用的最小线性回归分析方法(包括简单线性回归多重线性回归)的应用。 10.1简单线性回归分析 简单线性回归又称一元线性回归分析,是最简单也是最基本的一种回归分析方法。简单线性回归的特色是只涉及一个自变量,主要用来处理一个因变量一个自变量之间的线性关系,建立变量之间的线性模...

qq_45112156的博客 5313

回归分析

回归分析 0X00 前言 回归分析是研究自变量和因变量之间数量变化关系的一种分析方法,它主要是通过建立因变量Y与影响它的自变量X之间的回归模型,衡量自变量X对因变量Y的影响能力,进而可以预测因变量Y的发展趋势。 0X01 相关性分析与回归分析的联系与区别 相关性分析与回归分析的联系是:两者均为研究及测度两个或两个以上变量之间关系的方法。在实际工作中,一般先进行相关分析,计算相关系数,然后建立回归模...

weixin_40557482的博客 1683

R语言决策树实战教程

本文通过示例介绍R实现CART(classification and regression tree)过程。 当一组预测变量与响应变量的关系为线性时,我们使用多重线性回归可以生成准确的预测模型。但当它们的关系为更复杂的非线性关系时,则需采用非线性模型。 分类回归CART(classification and regression tree)方法使用一组预测变量构建决策树,用来预测响应变量。响应变量是连续的,我们能构建回归树;如果响应变量是分类类型,则构建分类树。下面通过示例构建回归和分类树过程。 构建回.

neweastsun的专栏 1万+

python 多重线性回归_python线性回归

一个简单线性回归模型测试。定义:线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。表达形式为y =aX+b,b为误差服从均值为0的正态分布,a为截距。回归分析中,只包括一个自变量和一个因变量,且者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线...

weixin_31787547的博客 301

线性回归模型选择:3个场景解析何时使用 R-Squared 与 Adjusted R-Squared

本文深入解析线性回归模型中R-Squared与Adjusted R-Squared的适用场景,帮助数据分析师在简单线性回归多重线性回归和模型比较等不同情况下做出明智选择。通过实际案例和代码示例,阐明何时优先使用R²或调整R²,避免常见误区,提升模型评估的准确性。

congju3179的博客 361

医学统计(现况调查的统计分析策略4多重线性回归分析)

探讨因果关系,分析影响有无及大小。预测与分类:构建良好的预测模型

wm_2609327016的博客 348
上一篇: IGV——基因组可视化
下一篇: Mac 挂载远程服务器
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值