You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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:简单相关性分析(快速找关联)

  • 计算每个问卷问题和甲状腺指标的相关性:
    # 假设问卷问题列名以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)
    
    数值越接近1或-1,说明这个问题和甲状腺功能的关联越强。

方法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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 02:32:38