如何在RStudio中合并三表并分析问卷问题对甲状腺功能的预测性?
从0开始:RStudio中合并数据并分析问卷对甲状腺功能的预测性
第一步:准备工作
- 打开RStudio,把你的三个CSV文件(甲状腺功能检测数据、起始问卷、结束问卷)放在同一个文件夹里,设置这个文件夹为工作目录:
setwd("你的文件夹路径") # 示例:setwd("D:/ThyroidStudy/Data") - 安装并加载必备工具包:
install.packages(c("tidyverse", "caret")) # tidyverse处理数据,caret做预测建模 library(tidyverse) library(caret)
第二步:导入并检查数据
- 分别读取三个CSV文件(替换成你实际的文件名):
thyroid_data <- read.csv("thyroid_test_results.csv") baseline_survey <- read.csv("baseline_questionnaire.csv") followup_survey <- read.csv("followup_questionnaire.csv") - 确认每个数据集里都有唯一的受试者ID(比如
subject_id),这是合并数据的关键:str(thyroid_data) str(baseline_survey) str(followup_survey)
第三步:合并所有数据
- 先合并两份问卷,给基线和随访的问题加前缀区分,再和甲状腺功能数据合并:
# 合并问卷,用subject_id匹配,后缀区分基线/随访 merged_surveys <- baseline_survey %>% left_join(followup_survey, by = "subject_id", suffix = c("_baseline", "_followup")) # 合并问卷和甲状腺数据 full_dataset <- merged_surveys %>% left_join(thyroid_data, by = "subject_id") - 检查有没有匹配失败的受试者:
# 替换成你实际的甲状腺指标列名,比如TSH sum(is.na(full_dataset$TSH)) # 数字代表没匹配到甲状腺数据的人数
第四步:数据清洗(新手必做)
- 处理缺失值,避免后续分析出错:
# 删除全为空的行 clean_data <- full_dataset %>% drop_na(where(~all(is.na(.)))) # 数值型问卷问题用中位数填充缺失值,分类问题用众数(这里示例数值型) num_columns <- clean_data %>% select(where(is.numeric)) %>% colnames() clean_data <- clean_data %>% mutate(across(all_of(num_columns), ~ifelse(is.na(.), median(., na.rm = TRUE), .))) - 把分类变量(比如性别、问卷选项)转成因子格式:
clean_data <- clean_data %>% mutate(across(where(is.character), as.factor))
第五步:分析问卷的预测性
方法1:简单相关性分析(快速找关联)
- 计算每个问卷问题和甲状腺指标的相关性:
数值越接近1或-1,说明这个问题和甲状腺功能的关联越强。# 假设问卷问题列名以q_开头,替换成你的实际前缀;TSH换成你的甲状腺指标 correlation_df <- clean_data %>% select(starts_with("q_"), TSH) # 计算皮尔逊相关系数,按相关性排序 corr_matrix <- cor(correlation_df, use = "complete.obs") corr_matrix[,"TSH"] %>% sort(decreasing = TRUE)
方法2:机器学习模型(精准筛选预测因子)
- 用随机森林模型找出重要的问卷问题:
# 5折交叉验证控制训练过程 train_ctrl <- trainControl(method = "cv", number = 5) # 训练模型,预测甲状腺指标(替换TSH为你的指标) rf_model <- train(TSH ~ ., data = clean_data %>% select(starts_with("q_"), TSH), method = "rf", trControl = train_ctrl, importance = TRUE) # 查看哪些问卷问题预测性最强 varImp(rf_model)
新手注意点
- 确保所有数据集里的受试者ID完全一致,别出现拼写错误、大小写不一致的情况
- 如果甲状腺功能是分类结果(比如正常/异常),把模型里的连续变量换成分类变量,方法选
glm或rf都可以 - 先从相关性分析入手,搞懂数据关联后再尝试机器学习模型
内容的提问来源于stack exchange,提问作者Paul Davies
相关产品推荐
相关产品推荐

