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

如何基于另一变量特定水平筛选数据,开展回归与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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:35:36