在现代社会,抑郁症已成为一个全球性的问题,尤其是在疫情后期,抑郁症患者的数量呈现出显著增长。为了更好地理解这一心理健康问题,科学研究者们亟需依托数据分析来探寻抑郁症的相关特性和潜在影响因素。本文将基于美国国家健康与营养调查(NHANES)数据库,深入探讨如何通过R语言进行抑郁症目标变量的定义、数据处理以及实操分析,以期为后续的研究提供有效的支持和指导。
一、NHANES数据库简介
美国国家健康与营养调查(NHANES)是一个重要的公共健康数据库,旨在评估美国成人和儿童的健康状况、营养状况以及流行病学特征。自1960年代以来,NHANES每年都会收集大量的健康和营养数据,包括身体检查、实验室测试和问卷调查等。
二、抑郁症的定义与数据来源
在NHANES数据库中,抑郁症评估数据主要来自于DPQ(Depression Patient Questionnaire)系列问卷。该问卷包含了PHQ-9(患者健康问卷-9项)抑郁筛查工具,涵盖了九个方面的问题,涉及兴趣、情绪、睡眠、精力等多个维度。每个问题均设有四个选项:无、几天、多天和每天,按照频率从0到3分计分。根据总分≥10分的标准,参与者可被诊断为抑郁症。
三、数据获取与整理
1. 数据获取
以2009-2010和2011-2012年为例,我们将使用R语言中的nhanesA包来自动化获取所需的数据集。以下是获取数据的代码示例: R source("./R/get_hanes_data.R") years <- c(2009, 2011) tables <- c('DPQ_F', 'DPQ_G') for (i in 1:2) { get_nhanes_data("Questionnaire", years[i], tables[i], dest_dir="raw_data/DEPRESSION") }
通过这段代码,我们可以轻松获取到所需的数据集。
2. 数据加载
接下来,我们需要批量导入数据表。以下是加载数据的函数: R load_xpt_data <- function(path="./data/demo", envir=.GlobalEnv) { if (!requireNamespace("haven", quietly=TRUE)) { stop("需要haven包,请先执行:install.packages('haven')") } if (!dir.exists(path)) { stop("指定路径不存在:", path) } xpt_files <- list.files(path=path, pattern=".xpt$", full.names=TRUE, ignore.case=TRUE) if (length(xpt_files) == 0) { message("在指定路径未找到.xpt文件:", path) return(invisible(NULL)) } lapply(xpt_files, function(file) { var_name <- tools::file_path_sans_ext(basename(file)) dataset <- tryCatch(haven::read_xpt(file), error=function(e) { message("读取文件失败:", file) message("错误信息:", conditionMessage(e)) return(NULL) }) if (!is.null(dataset)) { assign(var_name, dataset, envir=envir) message("成功加载:", var_name, "(", nrow(dataset), "行×", ncol(dataset), "列)") } }) invisible(TRUE) } load_xpt_data('./raw_data/DEPRESSION')
展开全文
此函数将帮助我们加载指定路径下的所有.xpt文件。
3. 数据整合
数据加载完成后,我们需要整合数据,包括选择相关变量和合并数据。以下是整合数据的代码: R library(tidyverse) Depression_dat <- bind_rows( DPQ_F %>% select(SEQN, matches("^DPQ[0-9]{3}")), DPQ_G %>% select(SEQN, matches("^DPQ[0-9]{3}")) )
4. 数据清洗
数据整合后,我们需要对数据进行清洗,以确保数据的准确性。以下是数据清洗的示例代码: R clean_dep <- Depression_dat %>% mutate(across(.cols=matches("^DPQ[0-9]{3}"), .fns=~case_when( . %in% c(0, 1, 2, 3) ~ as.integer(.), . %in% c(7, 9) ~ NA_integer_, is.na(.) ~ NA_integer_, TRUE ~ NA_integer_)))
四、目标变量的衍生
最后,我们将目标变量进行衍生,以便后续分析。以下是目标变量的衍生代码: R phq9_scored <- clean_dep %>% mutate(phq9_score = rowSums(select(., DPQ010:DPQ090), na.rm=FALSE), is_depression = case_when( phq9_score >= 10 ~ 1, phq9_score < 10 ~ 0, TRUE ~ NA_real_))
table(phq9_scored$is_depression, useNA='always')
通过这些步骤,抑郁症的目标变量已经成功加工完成。
五、总结与展望
本次文章分享了如何利用NHANES数据库和R语言进行抑郁症目标变量的定义、数据处理及实操分析的全过程。希望能够为研究者提供实用的参考与指导。抑郁症作为一个日益严峻的公共健康问题,亟需更多的科研合作与探索。欢迎有兴趣的研究者与我联系,一起推动这一领域的研究。
在此,祝愿每位读者都能保持身心健康!返回搜狐,查看更多