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

柯里磷火
• 阅读 1109

全文链接: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()


点击标题查阅往期内容

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

[](http://mp.weixin.qq.com/s?__biz=MzU4NTA1MDk4MA==\&mid=2247497153\&idx=1\&sn=e3f38dfefab414599123af8865af8568\&chksm=fd92cbcacae542dc298239c9ad3944391481619166f8d5d0fb37582286f4d395edc9d45d3966\&scene=21#wechat_redirect)使用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号婴儿显示为异常值......这可以继续下去,直到我们都满意为止。你还会做哪些转化?将吸烟和妊娠期交互作用会更好吗?


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

本文摘选 R语言多变量(多元)多项式曲线回归线性模型分析母亲吸烟对新生婴儿体重影响可视化 ,点击“阅读原文”获取全文完整资料。


点击标题查阅往期内容

面板平滑转换回归(PSTR)分析案例实现\
R语言时变面板平滑转换回归模型TV-PSTR分析债务水平对投资的影响\
面板平滑转换回归(PSTR)分析案例实现\
R语言自适应平滑样条回归分析\
R语言时间序列数据指数平滑法分析交互式动态可视化\
R语言中的广义线性模型(GLM)和广义相加模型(GAM):多元(平滑)回归分析保险资金投资组合信用风险敞口\
R语言预测人口死亡率:用李·卡特(Lee-Carter)模型、非线性模型进行平滑估计\
基于R统计软件的三次样条和平滑样条模型数据拟合及预测\
R语言实现CNN(卷积神经网络)模型进行回归数据分析\
R语言中的多项式回归、B样条曲线(B-spline Curves)回归\
R语言泊松Poisson回归模型分析案例\
在R语言中实现Logistic逻辑回归\
R语言用多项式回归和ARIMA模型预测电力负荷时间序列数据\
R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测\
R语言机器学习实战之多项式回归\
R语言自适应平滑样条回归分析\
R语言区间数据回归分析\
R语言逻辑回归和泊松回归模型对发生交通事故概率建模R语言线性回归和时间序列分析北京房价影响因素可视化案例\
R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例\
R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类\
R语言实现CNN(卷积神经网络)模型进行回归数据分析\
R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归\
R语言中使用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据\
【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析\
R语言ISLR工资数据进行多项式回归和样条回归分析\
R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型\
R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型\
R语言如何和何时使用glmnet岭回归\
R语言基于线性回归的资本资产定价模型(CAPM)\
Matlab马尔可夫区制转换动态回归模型估计GDP增长率\
R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Easter79 Easter79
3年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
柯里磷火
柯里磷火
Lv1
给不了彼此幸福的人是终身都不必再见的人.
文章
5
粉丝
0
获赞
0