拓端tecdat|R语言在BRFSS数据中可视化分析探索糖尿病的影响因素
原文链接:http://tecdat.cn/?p=9227
原文出处:拓端数据部落公众号
数据集:行为危险因素监视系统数据
摘要:该数据集是来自全美约40万份与健康相关主题的问卷调查。BRFSS始于1980年代,并已通过问卷调查在美国用于监测普遍的疾病。该研究是追溯性的,而不是设计性的实验,因此尽管可以推断出相关性,但不能因果关系。
数据集中的特征既是连续的又是分类的。
目标:探索性别,体重和年龄之间的相关性
第0部分:设置
library(ggplot2)
library(dplyr)
library(Rgraphviz)
library(knitr)
library(grid)
library(gridExtra)
load("brfss2013.RData")
# group and count a feature with discrete values
feature_vcounts <- function(df, f) {df %>%group_by_at(f) %>%count()}# method for binning values
bin_min_sample <- function(p) {n = 10a = 10/pb = 10/(1-p)max(c(a,b))}# create a new df for simulating binom probability distribution
binom_prob_df <- function(df, f, target) {new_df <- feature_vcounts(df,f)new_df$n[new_df[f] == target]/sum(new_df$n)}# filtering df with subgroup value
subgroup_df <- function(df,f, group) {filter(df,df[f]==group)}# calc the vector probability
binom_prob_vec <- function(v, target) {sum(v == target)/length(v)}# sample from df
binom_sample <- function(s,v)sample(v, size=s, replace=TRUE)# create the binomial sample distribution
binom_sample_dist <- function(df,f,target) {sample_dist <- c()for (i in 1:10001) {prob <- binom_prob_vec(binom_sample(100,df[,f]),target)sample_dist <- append(sample_dist,prob)}return(sample_dist)}# convert decimal to percent
to_percent <- function(pvalue) {paste(round(pvalue*100,digits= 2),"%",sep="")}
第1部分:数据
导入和过滤数据以仅包括与糖尿病,性别,体重和年龄有关的重要特征。
# Import original file:
orig_dim <- dim(brfss2013)# Select only relevant features:
weight_diabetes <- brfss2013 %>%select(sex, X_ageg5yr, weight2,diabete3)# ------------------Cleaning data------------------
# 1.Weight strings -> numeric
weight_diabetes$weight2 <- as.numeric(as.character(weight_diabetes$weight2))
new_dim <- dim(weight_diabetes)# 2. Remove Null Weights and Weights over 400
weight_diabetes <- na.omit(weight_diabetes)
weight_diabetes <- filter(weight_diabetes, weight2 <= 400)# 3. Remove Diabetes Responses
target <- c("Yes", "No")
weight_diabetes <- filter(weight_diabetes, diabete3 %in% target)# 4. Add index and reorder
weight_diabetes$index <- seq.int(nrow(weight_diabetes))
weight_diabetes <- weight_diabetes[c(4,3,1,2)]
clean_dim <- dim(weight_diabetes)# Show data:
kable(head(weight_diabetes,n=5), caption="Diabetes Data Set",padding=0, format = "markdown",align="l")
糖尿病 | 重量 | 性别 | X_ageg5yr |
---|---|---|---|
没有 | 250 | 女 | 60至64岁 |
没有 | 127 | 女 | 50至54岁 |
没有 | 160 | 女 | 55至59岁 |
没有 | 128 | 女 | 60至64岁 |
没有 | 265 | 男 | 65至69岁 |
数据看起来很简单,仅包含该项目所需的功能。因为数据需要匿名,所以年龄范围是特定年龄的安全替代方案。年龄范围将用作此数据集的分类信息。
第2部分:研究问题
研究问题1:
性别,体重和年龄之间有相关性吗?(变量:性别,weight2,X_ageg5yr)
由于性别是生物识别技术中的关键变量,因此探讨性别是否可能与其他变量相关很重要。在这种情况下,我们正在研究性别是否与体重相关。
研究问题2:
性别或年龄与糖尿病相关吗?怎么样?(变量:性别,X_ageg5yr,weight2,diabete3)
该探索性项目的目标是检查体重/性别/年龄是否与糖尿病相关。了解任何相关性可能有助于根据患者的性别和体重告知患者患糖尿病的可能性。
研究问题3:
年龄,体重和糖尿病之间有关系吗?(变量:性别,X_ageg5yr,weight2,diabete3)
为了进一步探讨与糖尿病的可能相关性,我们还将研究四个变量之间的关系。
第3部分:探索性数据分析
研究问题1:
性别,体重和年龄之间有相关性吗?(变量:性别,weight2,X_ageg5yr)
首先检查数据的分布很重要。性别是二元分类的,因此我们将用条形图形象化它的分布。
centered <- theme(plot.title = element_text(hjust = 0.5))
hist_weight <- ggplot(data=weight_diabetes,aes(weight2, fill=weight2))+geom_histogram(fill='salmon',color='white') + ggtitle("Histogram [Weight]") + centered
weight_diabetes$log_weight <- log(weight_diabetes$weight2)
hist_log_weight <- ggplot(data=weight_diabetes,aes(log_weight, fill=log_weight))+geom_histogram(fill='mediumturquoise',color='white') + ggtitle("Histogram [Log_Weight]") + centered
grid.arrange(hist_weight, hist_log_weight, ncol = 2)
对于Weight2,分布右偏,而Weight2的对数接近正态。由于数据的对数规范版本几乎是正常的单峰数据,因此可以将权重用于推断统计中的后续分析。
女性参加者比男性参加者更多,其幅度大大超过美国的总人口。这可能表明抽样方法在性别抽样方面并非完全随机。但是,数据样本足够大,可以继续评估健康风险因素。
年龄范围似乎在两端都偏向极端。
在比较年龄和体重时,性别的体重分布似乎确实存在明显差异。男性似乎比女性重。
还应注意,似乎还有一些成年患者体重不足50磅,许多患者体重约400磅。数据收集过程的未来分析应探索这些高低异常值是否是错误,或者它们是否反映出患有严重健康问题的患者。
研究问题2:
体重,年龄和/或性别与糖尿病相关吗?怎么样?(变量:性别,X_ageg5yr,weight2,diabete3)
当观察样本中的女性和男性参与者时,报告的糖尿病比率非常相似。
随着年龄的增长,直到80岁及更高年龄,糖尿病的报告比例也似乎会增加。年龄可能与糖尿病有某种程度的相关性。
随着体重增加,所报告的糖尿病比例也增加。体重似乎与报告的糖尿病有很强的相关性,应进一步探讨。
研究问题3:
年龄,体重和糖尿病之间有关系吗?(变量:性别,X_ageg5yr,weight2,diabete3)
报告患有糖尿病的男性和女性的体重分布均较高。男性的体重分布比女性重。
这些箱线图描绘了一个更清晰的故事。报告患有糖尿病的患者似乎在每个年龄段都较重。报告患有糖尿病的年轻患者似乎比老年患者具有更大的体重范围。虽然尚不清楚年龄与糖尿病和体重之间的关系,但应进一步探讨这种关系。
第4部分:结论
从数据的初步探索中可以明显看出,某些功能具有比其他功能更强的相关性。体重与性别有关。性别似乎与体重无关。但是,糖尿病似乎与年龄有关,而与体重密切相关。
拓端tecdat|R语言在BRFSS数据中可视化分析探索糖尿病的影响因素相关推荐
- 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险
最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...
- 拓端tecdat|R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测
最近我们被客户要求撰写关于LOESS(局部加权回归)的研究报告,包括一些图形和统计输出. 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的中点进行建模的方法.我们将对一种叫做STL的算法进行研究, ...
- 拓端tecdat|R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系
最近我们被客户要求撰写关于向量误差修正模型的研究报告,包括一些图形和统计输出. 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的.但是,经济理论认为,经济变量之间在水平上存在着均衡关系,可以 ...
- 拓端tecdat|R语言线性回归和时间序列分析北京房价影响因素可视化案例
最近我们被客户要求撰写关于北京房价影响因素的研究报告,包括一些图形和统计输出. 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策: ...
- 基于R语言股票市场收益的统计可视化分析
最近我们被客户要求撰写关于股票市场收益的研究报告,包括一些图形和统计输出. 金融市场上最重要的任务之一就是分析各种投资的历史收益.要执行此分析,我们需要资产的历史数据.数据提供者很多,有些是免费的,大 ...
- R语言广义加性模型GAMs分析温度、臭氧环境数据绘制偏回归图与偏残差图
最近我们被客户要求撰写关于广义加性模型的研究报告,包括一些图形和统计输出. 视频:R语言广义相加模型(GAM)在电力负荷预测中的应用 拓端tecdat:R语言广义相加模型(GAM)在电力负荷预测中的应 ...
- 拓端tecdat荣获掘金社区入驻新人奖
2021年7月,由掘金发起了"入驻成长礼"颁奖活动.本次活动邀请到知名开发者.服务机构代表等业界人士. 据了解,掘金社区"新入驻创作者礼"主要对已经积累了一定历 ...
- R语言把dataframe数据转化为tibble格式、查看每个数据列的缺失值个数、使用数据列的均值对数据列的缺失值进行填充
R语言把dataframe数据转化为tibble格式.查看每个数据列的缺失值个数.使用数据列的均值对数据列的缺失值进行填充 目录
- R语言进行dataframe数据内连接(Inner join):使用R原生方法、data.table、dplyr等方案
R语言进行dataframe数据内连接(Inner join):使用R原生方法.data.table.dplyr等方案 目录 R语言进行dataframe数据内连接(Inner join):使用R原生 ...
- R语言使用zoo包中的rollapply函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations)、例如,计算两种商品销售额之间的3个月的滚动相关性
R语言时间序列数据滚动相关性分析(Rolling correlations).R语言使用zoo包中的rollapply函数计算两个时间序列数据列之间的滚动相关性(Rolling correlation ...
最新文章
- redis一般缓存什么样数据_门户数据展示_Redis缓存数据
- Linq to Sql : 动态构造Expression进行动态查询
- Android——应用图标微技巧,系统中应用图标的适配
- springboot+redis实现分布式session共享
- 极光推送经验之谈-Java后台服务器实现极光推送的两种实现方式
- linux+++乘法口诀_Shell的九九乘法口诀
- Nginx启动后无法访问页面
- 3月12日见!红魔5G游戏手机正式官宣:全球首款144Hz游戏手机
- C++---异常处理
- mongodb batchInsert
- php毕业设计和毕业论文怎么写,答辩流程是怎样的?
- 在Windows 10 增加和使用英语语音包
- python click 函数
- worksheet获取cell_Worksheet:Cell
- JavaScrpit+Html实现日期时间启动、停止操作(应用场景:计时器、秒表)
- MySql查询优化性能调优,sql性能自测方法,及Mysql索引介绍
- 是时候好好审视下自己了
- 计算机在机械智能制造中的应用,数控技术在智能制造中的应用及发展
- CAPEX OPEX
- 【困扰了很久,实测已解决】MacBook上不了V2EX网站但Windows可以
热门文章
- c3p0数据库连接池不能取到连接
- asp.net有效使用缓存(转)
- /usr/include/x86_64-linux-gnu/bits/socket.h源码
- 机器学习算法与Python学习
- web性能压力测试工具http_load/webbench/ad
- 算法笔记_101:蓝桥杯练习 算法提高 身份证号码升级(Java)
- 玩音响发烧友必看的博客
- Android Studio 安装配置详细步骤,以及使用的基本操作
- 常见makefile写法
- Java文件编译的两种方式以及在SpringMVC传参中带来的问题