码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • R语言分析糖尿病数据:多元线性模型、MANOVA、决策树、典型判别分析、HE图、Box's M检验可视化...


    全文链接:https://tecdat.cn/?p=33609

    Reaven和Miller(1979)研究了145名非肥胖成年人的葡萄糖耐量和胰岛素血液化学指标之间的关系。他们使用斯坦福线性加速器中心的PRIM9系统将数据可视化为3D,并发现了一个奇特的图案,看起来像是一个有两个翼的大斑点(点击文末“阅读原文”获取完整代码数据)。

    相关视频

    背景

    本文帮助客户使用这些数据来说明多元线性模型的各种图形方法。

    设置

    读取数据

    str(Diabetes)

    outside_default.png

    这些变量是:

    • relwt:相对体重,表示实际体重与人的身高相比的期望体重的比率

    • glufast:空腹血浆葡萄糖水平

    • glutest:测试血浆葡萄糖水平,测量葡萄糖不耐受的程度,

    • instest:测试中的血浆胰岛素,测量口服葡萄糖的胰岛素反应,

    • sspg:稳态血浆葡萄糖,测量胰岛素抵抗性

    • group:诊断组

    数据的椭圆和方差齐性

    我们首先绘制数据集中三个变量的协方差椭圆。

    从这个结果中可以清楚地看出,这里存在方差-协方差矩阵的异质性问题。正常组显示了最小的方差,而明显糖尿病组则显示了最大的方差。

    covEllipses(Diabetes

    outside_default.png

    然而,在其他面板中并非如此,在那里化学糖尿病群体与正常人在一个方向上不同,而明显糖尿病群体在另一个方向上有所不同,并且其内部群体相关性与其他群体呈相反的符号。这在单独的散点图中更容易看到,例如以下示例。

    outside_default.png

    另外,我们注意到可以使用scatter3d``car包中的三维散点图更容易地看到组之间的差异。

    scatter3d

    outside_default.png

    带有50%数据椭圆体的糖尿病数据的三维散点图


    点击标题查阅往期内容

    outside_default.png

    数据分享|PYTHON用决策树分类预测糖尿病和可视化实例

    outside_default.png

    左右滑动查看更多

    outside_default.png

    01

    outside_default.png

    02

    outside_default.png

    03

    outside_default.png

    04

    outside_default.png

    Box's M检验

    Box's M检验确认协方差矩阵存在显著的异质性。

    diab.boxm <- box

    outside_default.png

    outside_default.png

    对数行列式按照我们在协方差椭圆图中看到的数据椭圆体的大小进行排序。

    拟合MLM模型

    对组间均值差异拟合MANOVA模型。

    MANOVA显示group对响应变量集合有高度显著影响。

    Anova(diab.mlm)

    outside_default.png

    在 QQ 图中检查残差

    MANOVA 的另一个假设是残差服从多元正态分布。可以通过卡方 QQ 图进行视觉评估。从下图可以看出,数据点与红色的等值线明显不同。有太多具有较大 D2 值的数据点。

    qplot(da.ml)

    outside_default.png

    HE 图

    HE 图显示了各均值之间的 H 椭圆以及误差的 E 椭圆。

    默认情况下,将绘制前两个响应变量。结果显示出在 Normal 和 Chemical 变量上的均值排序较为明显。

    hplot(diab.

    outside_default.png

    对于 MLM 的方法会给出一个散点图矩阵,其中包含所有响应变量之间的 HE 图。从结果中可以看出,Diabetes 变量的模式与其他变量不同。

    pairs(diblm, fill=TRUE, fill.alpha=0.1)

    outside_default.png

    典型判别分析

    典型判别分析将数据有效地投影到响应的线性组合空间,这个空间解释了组间方差相对于组内方差的最大比例。

    diab.an

    outside_default.png

    典型判别图

    plot(dib.an, fill=TRUE, fill.alpha=0.1)

    通过一个对象的方法,将典型维度上的分数绘制出来,并在每个组上叠加 60% 的数据椭圆。组均值的位置显示了它们在典型维度上的表现。

    响应变量与典型维度的关系通过矢量(类似于双标图)显示出来。每个矢量由其与典型维度的相关系数(结构系数)定义。

    plot(diab.can, ellipse=TRUE, var.lwd=2)

    outside_default.png 在这个图中可以看到:

    • 第一维与glufast、glutest高度相关,而且组别按照Normal < Chemical < Overt的顺序排列。

    • 第二维将Diabetic组与其他两个组区分开来。这个维度与检测过程中的血浆胰岛素水平密切相关。这验证了我们在HE矩阵图中对所有响应变量的观察结果。

    • 规范化的得分数据椭圆的相对大小是方差异质性缺乏的另一个视觉指标。

    规范化的HE图

    使用规范判别分析的HE图可以概括展示出规范判别分析的结果。变量向量与规范结构图中的变量向量相同。plot(dbcn, fill=c(TRU=0.1, var.lwd=2)

    outside_default.png

    ## 矢量比例因子设置为12.06

    线性判别分析和二次判别分析

    线性判别分析(LDA)与多元方差分析(MANOVA)类似,但重点是分类而不是测试均值之间的差异。此外,LDA允许指定组成员身份的先验概率,以使分类错误率与所关注人群中获得的结果可比较。二次判别分析允许组之间的协方差矩阵存在差异,并给出二次而不是线性的分类边界。

    从LDA的角度来看,可视化结果的一个目标是通过LD1和LD2的得分来查看分类的边界。

    outside_default.png

    递归分区决策树

    递归分区是一种创建决策树的方法,旨在对人群的成员进行分类。它使用预测因子的二分间隔将数据递归地分割成子群体。对于糖尿病数据,结果非常简单:当glutest < 420时,将正常组与两个临床组区分开来。对于后者,glufast < 117将个体分类为化学性糖尿病而不是明显性糖尿病。

    diabart <- rpart(

    outside_default.png

    使用rpart.plot包可以绘制分区树的漂亮图形。节点中的数字给出了每个组中分类的比例。

    rpart.plot(, box.pal

    outside_default.png

    这样做效果如何?我们可以查看预测的组成员资格与实际结果之间的表格,并计算错误率。效果还不错!

    1. (class.pred <- table(predicted
    2. # 错误率
    3. 1 - sum(diag(class.pred))/sum(class.pred)
    4. ## [1] 0.013

    outside_default.png

    参考资料

    Friendly, M. & Sigal, M. (2017) Visualizing Tests of Equality of Covariance Matrices. Submitted for publication.

    Reaven, G. M. & Miller, R. G. (1979). An Attempt to Define the Nature of Chemical Diabetes Using a Multidimensional Analysis Diabetologia, 16, 17-24.


    outside_default.png

    点击文末“阅读原文”

    获取全文完整代码数据资料。

    本文选自《R语言分析糖尿病数据:多元线性模型、MANOVA、决策树、典型判别分析、HE图、Box's M检验》。

    outside_default.png

    outside_default.png

    点击标题查阅往期内容

    样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化

    SAS分类决策树预测贷款申请评分剪枝和结果可视化

    分类回归决策树交互式修剪和更美观地可视化分析细胞图像分割数据集

    PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像

    PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化

    Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析

    PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化

    R语言集成模型:提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据

    Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析

    R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化

    R语言基于树的方法:决策树,随机森林,Bagging,增强树

    R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测

    spss modeler用决策树神经网络预测ST的股票

    R语言中使用线性模型、回归决策树自动组合特征因子水平

    R语言中自编基尼系数的CART回归决策树的实现

    R语言用rle,svm和rpart决策树进行时间序列预测

    python在Scikit-learn中用决策树和随机森林预测NBA获胜者

    python中使用scikit-learn和pandas决策树进行iris鸢尾花数据分类建模和交叉验证

    R语言里的非线性模型:多项式回归、局部样条、平滑样条、 广义相加模型GAM分析

    R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类

    R语言ISLR工资数据进行多项式回归和样条回归分析

    R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

    R语言用泊松Poisson回归、GAM样条曲线模型预测骑自行车者的数量

    R语言分位数回归、GAM样条曲线、指数平滑和SARIMA对电力负荷时间序列预测

    R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化

    如何用R语言在机器学习中建立集成模型?

    R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测

    在python 深度学习Keras中计算神经网络集成模型

    R语言ARIMA集成模型预测时间序列分析

    R语言基于Bagging分类的逻辑回归(Logistic Regression)、决策树、森林分析心脏病患者

    R语言基于树的方法:决策树,随机森林,Bagging,增强树

    R语言基于Bootstrap的线性回归预测置信区间估计方法

    R语言使用bootstrap和增量法计算广义线性模型(GLM)预测置信区间

    R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化

    Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析

    R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析

    R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化

    Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线

    matlab使用分位数随机森林(QRF)回归树检测异常值

    outside_default.png

    outside_default.png

    outside_default.png

  • 相关阅读:
    人大与加拿大女王大学金融硕士项目——立即行动,才是缓解焦虑的解药
    什么是图数据库,解释图数据库的特点和应用场景
    二十七、java版 SpringCloud分布式微服务云架构之Java 枚举(enum)
    回溯算法常见思路
    PY32F003F18之RTC
    简易绘图 DataFrame.plot
    C,C++网络编程学习指南
    Python(五)——运算符的使用
    [MAUI 项目实战] 手势控制音乐播放器(三): 动画
    docker安装RabbitMQ及安装延迟插件
  • 原文地址:https://blog.csdn.net/tecdat/article/details/132769981
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号