如何基于另一变量特定水平筛选数据,开展回归与Pearson相关分析?
解决方案
首先修正原始数据代码(Time需为字符串向量,否则会报错):
ID <- c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3) X1 <- c(0.1,0.3,NA,2.2,0,NA,0.1,NA,1.4,2.3,0,NA,NA,0.3,2.8,2.3,0,NA) X2 <- c(0.8,NA,1.2,0.3,NA,NA,0.8,NA,1.5,NA,2.2,NA,0.8,NA,1.7,0.3,1.1,2.4) X3 <- c(1.1,0.2,0.4,0.8,NA,0.6,1.1,3.2,2.4,0.8,NA,NA,1.1,0.2,0.4,0.8,NA,0.6) Time <- c("baseline","week1","week2","week3","week4","week5", "baseline","week1","week2","week3","week4","week5", "baseline","week1","week2","week3","week4","week5") data <- data.frame(ID,X1,X2,X3,Time)
步骤1:整理目标数据
使用dplyr包(需提前安装:install.packages("dplyr"))提取每个患者的week3期X1、week5期X2和X3,并筛选出有week5结局数据的患者:
library(dplyr) # 提取各时间点的目标变量 analyze_data <- data %>% group_by(ID) %>% summarise( X1_week3 = X1[Time == "week3"], X2_week5 = X2[Time == "week5"], X3_week5 = X3[Time == "week5"] ) %>% # 筛选:week5至少有一个结局变量非NA(即具备结局评估) filter(!is.na(X2_week5) | !is.na(X3_week5)) %>% # 移除X1_week3为NA的样本(无法参与分析) filter(!is.na(X1_week3))
步骤2:Pearson相关性检验
# week5 X2 与 week3 X1 的相关性 cor_test_X2 <- cor.test(analyze_data$X1_week3, analyze_data$X2_week5, method = "pearson", use = "complete.obs") print(cor_test_X2) # week5 X3 与 week3 X1 的相关性 cor_test_X3 <- cor.test(analyze_data$X1_week3, analyze_data$X3_week5, method = "pearson", use = "complete.obs") print(cor_test_X3)
步骤3:常规线性回归分析
# week5 X2 对 week3 X1 的回归 lm_X2 <- lm(X2_week5 ~ X1_week3, data = analyze_data, na.action = na.omit) summary(lm_X2) # week5 X3 对 week3 X1 的回归 lm_X3 <- lm(X3_week5 ~ X1_week3, data = analyze_data, na.action = na.omit) summary(lm_X3)
说明
use = "complete.obs"和na.action = na.omit确保仅使用两个变量均无缺失值的样本进行分析- 筛选条件
!is.na(X2_week5) | !is.na(X3_week5)保证纳入的患者至少有一项week5结局评估数据
内容的提问来源于stack exchange,提问作者Aura
相关产品推荐
相关产品推荐

