数据分享|多变量多元多项式曲线回归线性模型分析母亲吸烟对新生婴儿体重影响可视化

简介: 数据分享|多变量多元多项式曲线回归线性模型分析母亲吸烟对新生婴儿体重影响可视化

全文链接:http://tecdat.cn/?p=26147 


本文使用的数据集记录了 1236 名新生婴儿的体重查看文末了解数据获取方式,以及他们母亲的其他协变量。


本研究的目的是测量吸烟对新生儿体重的影响。研究人员需要通过控制其他协变量(例如母亲的体重和身高)来隔离其影响。这可以通过使用多元回归模型来完成,例如,通过考虑权重  Y_i  可以建模为


str(babis)

数据集的描述如下:

  • bwt 是因变量,新生儿体重以盎司为单位。数据集使用 999 作为缺失值。
  • gestation 是怀孕的时间,以天为单位。999 是缺失值的代码。
  • parity 第一胎使用 0,否则使用 1,缺失值使用 9。
  • age 是母亲的年龄,整数。99 是缺失值。
  • height 是母亲的身高。99 是缺失值。
  • weight 是母亲的体重,以磅为单位。999 是一个缺失值。
  • smoke 是一个分类变量,表示母亲现在是否吸烟 (1) (0)。9 是缺失值。

这个问题的研究人员想要判断以下内容:

  • 吸烟的母亲会增加早产率。
  • 吸烟者的新生儿在每个胎龄都较小。
  • 与母亲的孕前身高和体重、产次、既往妊娠结局史或婴儿性别(这最后两个协变量不可用)相比,吸烟似乎是出生体重的一个更重要的决定因素。

我们将专注于第二个判断:

从str()命令中注意到,所有的变量都被存储为整数。我将把缺失值转换为NAs,这是R中缺失值的正确表示。

bwt == 999\] <- NA
# 有多少观察结果是缺失的?
sapply(babies, couna)

每当您在 R 中使用函数时,请记住,默认情况下它可能有也可能没有 na-action。例如,该 mean() 函数没有,并且 NA 在将缺少值的参数传递给它时简单地返回:

sapply(babies, mean)

您可以通过检查 mean() 函数帮助来纠正它,通过一个参数 na.rm=TRUE,它删除了 NAs。

sapply(babies, mean, na.rm = TRUE)

另一方面, 默认情况下summary() 会删除 NAs,并输出找到的 NAs 数量,这使其成为汇总数据时的首选。

summary(babies)

我们可以看到转换因子显示了不同的摘要,因为 summary() 操作根据变量类型而变化:

parity <- factor(parity, levels )

绘制数据是您应该采取的第一个操作。我将使用 lattice 包来绘制它,因为它的最大优势在于处理多变量数据。

require(lattice)

xyplot

为了拟合多元回归模型,我们使用命令 lm()


点击标题查阅往期内容


使用R语言进行多项式回归、非线性回归模型曲线拟合


01

02

03

04


model <- lm(bwt ~ ., data = babies)

这是总结:

summary(model)

注意R的默认动作是删除信息缺失的行。不过,如何解释这些系数呢?

如果j协变量xj是实值,那么系数βj的值就是在其他协变量不变的情况下,将xij增加1个单位对Yi的平均影响。

如果j协变量xj是分类的,那么系数βj的值是对Yi从参考类别到指定水平的平均增量影响,而其他协变量保持不变。参考类别的平均值是截距(或参考类别,如果模型中有一个以上的分类协变量)。

为了验证这些假设,R有一个绘图方案。

残差中的曲率表明,需要进行一些转换。尝试取bwt的对数,以获得更好的拟合(与妊娠期相比)。

summary(model.log)

为了简单起见,我会保留线性模型。给妊娠期增加一个二次项可能有用。公式通常保存^作为交互作用的快捷方式,所以(妊娠期+烟)^2与妊娠期*烟或妊娠期+烟+妊娠期:烟相同。

改进仍然很小,但它现在确实将观察样本 261 显示为异常值。这个观察有什么问题?

babies\[261, \]

我们可以看到,而母亲的身高、年龄等都非常合理;这个婴儿异常早产。因此,将他/她剔除出模型。

拟合度有所提高,但现在870号婴儿显示为异常值......这可以继续下去,直到我们都满意为止。你还会做哪些转化?将吸烟和妊娠期交互作用会更好吗?

相关实践学习
函数计算部署PuLID for FLUX人像写真实现智能换颜效果
只需一张图片,生成程序员专属写真!本次实验在函数计算中内置PuLID for FLUX,您可以通过函数计算+Serverless应用中心一键部署Flux模型,快速体验超写实图像生成的魅力。
相关文章
|
消息中间件 Kubernetes NoSQL
c++中的类型推导
c++中的类型推导
|
SQL 数据库 数据库管理
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(一)模式、表、索引与视图
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(一)模式、表、索引与视图
419 11
|
vr&ar 图形学
PICO4开发实战一:节奏光剑(VR)(需求文档)
这篇文章是PICO4开发实战指南,详细介绍了开发一款名为“节奏光剑”的VR游戏的需求文档,包括从基础功能开发到交互体验优化、场景体验优化、UI设计、游戏关卡设计等多个开发阶段的详细规划和说明。
PICO4开发实战一:节奏光剑(VR)(需求文档)
|
编译器 开发工具 C语言
配置C++的学习环境
这篇教程介绍了学习C++语言所需的环境配置和软件选择。首先,你需要一个文本编辑器(如Visual Studio Code、Visual Studio、Vim、Emacs或Eclipse)和一个C++编译器(如GCC)。在不同操作系统上安装GCC的方法包括:在Linux或UNIX上使用命令行检查或安装GCC,在Mac OS X上通过Apple的Xcode,而在Windows上则需要安装MinGW。教程还提供了使用Visual Studio创建和编译C++程序的步骤。最后,文章简述了g++编译器的使用及其常用命令选项。
539 0
|
容灾 Java 测试技术
低成本、高稳定性 |满帮集团 Eureka 和 ZooKeeper 的上云实践
充分了解和利用云的能力,能够让满帮技术团队从底层的持续投入中解脱出来,聚焦更上层的系统稳定性和工程效率,从架构层面实现更高的 ROI。
68490 113
|
算法 Unix 调度
操作系统(7)----调度相关知识点(万字总结~)(2)
操作系统(7)----调度相关知识点(万字总结~)
1443 1
|
存储 前端开发 JavaScript
微任务和宏任务有什么区别
微任务和宏任务是JavaScript异步编程中的两个概念。宏任务包括整体代码块、setTimeout等,微任务有Promise、MutationObserver等。主要区别在于执行时机:每次事件循环中,宏任务只执行一个,而微任务会在当前宏任务结束后、下一个宏任务开始前全部执行完毕。
|
C++
第三大的数(C++)
第三大的数(C++)
158 0
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
3918 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
Web App开发 JavaScript 前端开发
react18【系列实用教程】搭建开发环境(2024版)Vite+React (官方推荐)(含@配置,react-developer-tools 和 Redux DevTools 下载安装)
react18【系列实用教程】搭建开发环境(2024版)Vite+React (官方推荐)(含@配置,react-developer-tools 和 Redux DevTools 下载安装)
1435 1