library(tidyverse)
library(MatchIt)
library(compareGroups)
df <- read_csv("data.csv",#读取数据
col_names = TRUE) #第一行为列名
glimpse(df)#查看数据整体情况
names(df)#查看列名
table(df[,"operation"])#查看分组变量的分布情况
#matchit函数需要分组变量为0和1,其中1为治疗组,0为对照组
#以下应用mutate函数进行转换
df<- mutate(df,operation = case_when(
operation == "ERCP" ~ 0,
operation == "EUS-BD" ~ 1))
#以下进行PSM分析,获得的分析结果为一个list
psm<- matchit(data = df,#数据集
formula = operation ~ surgeon,
#以上为PSM方程,~ 左侧为分组变量,右侧为待匹配变量
method = "nearest",#此获得PSM评分后,应用什么方法进行对照组的匹配
distance = "logit",#计算PSM评分的方法
replace = FALSE,#是否进行有放回的匹配
caliper = 0.2,#卡钳值,最终选择的两组的PSM评分的差距
ratio = 4)#匹配的比例,一般为1:1到1:4
summary(psm)#查看匹配的结构
data_matched<-match.data(psm)#提取匹配后的数据集
colnames(data_matched)
parameter_result<- descrTable(operation ~ ., data = data_matched)#对比两组的基线情况,连续变量应用参数检验
Non_result<- descrTable(operation ~ .,method = 2, data = data_matched)#对比两组的基线情况,连续变量应用非参数检验
#以下导出结果
export2word(parameter_result,"parameter_result.docx")
export2word(Non_result,"Non_result.docx")
网友评论