R语言在BRFSS数据中可视化分析探索糖尿病的影响因素

简介: R语言在BRFSS数据中可视化分析探索糖尿病的影响因素

数据集:行为危险因素监视系统数据

摘要:该数据集是来自全美约40万份与健康相关主题的问卷调查。BRFSS始于1980年代,并已通过问卷调查在美国用于监测普遍的疾病。该研究是追溯性的,而不是设计性的实验,因此尽管可以推断出相关性,但不能因果关系。

数据集中的特征既是连续的又是分类的。

目标:探索性别,体重和年龄之间的相关性


第0部分:设置

library(ggplot2) library(dplyr) library(Rgraphviz) library(knitr) library(grid) library(gridExtra)
load("brfss2013.RData")
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 = 10 a = 10/p b = 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部分:结论

从数据的初步探索中可以明显看出,某些功能具有比其他功能更强的相关性。体重与性别有关。性别似乎与体重无关。但是,糖尿病似乎与年龄有关,而与体重密切相关。

相关文章
|
3月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
4月前
|
数据可视化 数据挖掘 数据处理
R语言高级可视化技巧:使用Plotly与Shiny制作互动图表
【8月更文挑战第30天】通过使用`plotly`和`shiny`,我们可以轻松地创建高度互动的数据可视化图表。这不仅增强了图表的表现力,还提高了用户与数据的交互性,使得数据探索变得更加直观和高效。本文仅介绍了基本的使用方法,`plotly`和`shiny`还提供了更多高级功能和自定义选项,等待你去探索和发现。希望这篇文章能帮助你掌握使用`plotly`和`shiny`制作互动图表的技巧,并在你的数据分析和可视化工作中发挥更大的作用。
|
2月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
58 3
|
3月前
R语言基于表格文件的数据绘制具有多个系列的柱状图与直方图
【9月更文挑战第9天】在R语言中,利用`ggplot2`包可绘制多系列柱状图与直方图。首先读取数据文件`data.csv`,加载`ggplot2`包后,使用`ggplot`函数指定轴与填充颜色,并通过`geom_bar`或`geom_histogram`绘图。参数如`stat`, `position`, `alpha`等可根据需要调整,实现不同系列的图表展示。
|
3月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
4月前
|
数据可视化
R语言可视化设计原则:打造吸引力十足的数据可视化
【8月更文挑战第30天】R语言可视化设计是一个综合性的过程,需要综合运用多个设计原则来创作出吸引力十足的作品。通过明确目标、选择合适的图表类型、合理运用色彩与视觉层次、明确标注与引导视线以及引入互动性与动态效果等原则的应用,你可以显著提升你的数据可视化作品的吸引力和实用性。希望本文能为你提供一些有益的启示和帮助。
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
4月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
4月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
7月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化