第一周(真实世界介绍)
第二周(R语言基础及实用技能)
第三周(单因素批量分析及变量筛选)
第四周(多因素分析-协变量调整)
第五周(探索性数据分析)
第六周(生存分析)
第七周(二分类预测模型得构建)
第八周(生存模型得构建)
第9周
library(tidyverse)#数据科学
library(jskm)#加权KM
library(survival)#生存分基础包
library(WeightIt)#IPTW计算权重
library(survey)#复杂抽样权重
library(cobalt)#评估SMD
library(gtsummary)#快速基线表格
library(visdat)#EDA
library(SmartEDA)#EDA
library(mice)#多重插补
library(MatchThem)#多重插补加权
library(tableone)#SMD表格
library(openxlsx)#读取xlsx格式文件
library(Publish)#亚组分析及交互作用
library(EValue)#E值计算
rm(list = ls())
#数据分布情况
df <- read.xlsx("df.xlsx")
glimpse(df)
#初步可视化
#整体游览数据visdata
vis_miss(df,sort_miss = T)
vis_dat(df,sort_type = T)
vis_cor(df[,-3])
vis_guess(df)#对于数据中存在的异常值检测
#相对密度分布情况
vis_value(select(df, where(is.numeric)),viridis_option = "A")
#相对定量分析
# smartEDA
## overview of the data;
ExpData(data=df,type=1)
## structure of the data
ExpData(data=df,type=2)
names(df)
## Summary statistics by – category
ExpNumStat(df,by="GA",gp="rx",Qnt=seq(0,1,0.1),MesofShape=2,Outlier=TRUE,round=2)
## 分类比例情况
cat.table<- ExpCTable(df)
#整体报告
ExpReport(df,
Target="rx",
label=NULL,
op_file="test.html",
op_dir=getwd(),
sc=2,
sn=2,
Rc="Yes")
#转换数据
df$rx <- ifelse(df$rx=="Obs",0,1)
df$sex <- as.factor(df$sex)
# 2. mice包进行多重插补及组合权重进入多重插补----------------------------------------------------------------------
#默认参数插补数据集
df_imp <- mice(df,m = 10)
df_imp
test <- complete(df_imp,action = 2)
vis_miss(test)
#计算插补后权重权重
df_imp_weighted <- weightthem(rx ~ obstruct+adhere+age+differ+sex+surg,
datasets = df_imp,
approach = 'within',
method = 'ps',
estimand = "ATT")
#展示加权
bal.tab(df_imp_weighted,abs = T)
love.plot(df_imp_weighted,abs = T)
# tableone包进行分析
vars <- dput(names(df))
df <- na.omit(df)
#计算插补后权重权重
df_weighted <- weightit(rx ~ obstruct+adhere+age+differ+sex+surg,
data = df,
approach = 'within',
method = 'ps',
estimand = "ATT")
(t1<- tableone::CreateTableOne(vars = vars ,
data = df,
strata="rx",
smd = T))
ExtractSmd(t1)
#gtsummary联合cobalt
tbl_summary_ex2 <-
df %>%
tbl_summary(
by = rx,
label = list(age ~ "Patient Age"),
statistic = list(all_continuous() ~ "{mean} ({sd})"),
digits = list(age ~ c(0, 1))
) |>
add_p()
tbl_summary_ex2
tbl_summary_ex2 |>
as_flex_table() |>
flextable::save_as_docx(path = "测试.docx")
love.plot(df_weighted,abs = T)
#计算插补后权重权重
df_weighted <- weightit(rx ~ obstruct+adhere+age+differ+sex+surg,
data = df,
method = "glm")
# 创建一个复杂抽样设计对象,用于进行加权分析
df_svy <- svydesign(
id = ~1, # 指定一个虚拟的标识符变量,因为我们只需要一个观察一个群组
weights = ~df_weighted$weights, # 指定权重变量为
data = df, # 数据集
)
# 使用 svykm() 函数计算加权的 Kaplan-Meier 生存曲线,按性别分组
s1 <- svykm(Surv(time, status > 0) ~ rx, design = df_svy)
svycoxph(Surv(time, status) ~ rx, design = df_svy) |>
broom::tidy(exponentiate = TRUE)
coxph(Surv(time, status) ~ rx, data = df,weights = df_weighted$weights) |>
broom::tidy(exponentiate = TRUE)
# 使用 svyjskm() 函数绘制加权的 Kaplan-Meier 生存曲线
svyjskm(s1,pval = T,table = T)
#拟合单因素cox回归方程
fit_cox <- coxph(Surv(time,status)~rx,
data=df,
weights = df_weighted$weights)
#进行亚组分析
df$rx <- as.factor(df$rx)
df$etype <- as.factor(df$etype)
sub_cox <- subgroupAnalysis(object = fit_cox,#单因素回归方程
data = df,#数据集
treatment="rx", #治疗因素(主要研究自变量)
subgroups=c("sex","etype")#需要进行亚组分析的变量
)
sub_cox
plot(sub_cox)
coxph(Surv(time, status) ~ rx,
data = df,
weights = df_weighted$weights) |>
tbl_regression(exponentiate = T)
svycoxph(Surv(time, status) ~ rx, design = df_svy) |>
tbl_regression(exponentiate = T)
evalues.HR(est = 0.73,
lo = 0.64,
hi = 0.84,
rare = F)