必要なlibraryの読み込み
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.3 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readxl)
library(tableone)
library(lubridate)
library(skimr)
library(svglite)
library(haven)
library(summarytools)
##
## 次のパッケージを付け加えます: 'summarytools'
##
## 以下のオブジェクトは 'package:tibble' からマスクされています:
##
## view
library(naniar)
##
## 次のパッケージを付け加えます: 'naniar'
##
## 以下のオブジェクトは 'package:skimr' からマスクされています:
##
## n_complete
library(devtools)
## 要求されたパッケージ usethis をロード中です
library(reader)
## 要求されたパッケージ NCmisc をロード中です
##
## 次のパッケージを付け加えます: 'reader'
##
## 以下のオブジェクトは 'package:NCmisc' からマスクされています:
##
## cat.path, get.ext, rmv.ext
library(stringr)
library(missForest)
library(mice)
##
## 次のパッケージを付け加えます: 'mice'
##
## 以下のオブジェクトは 'package:stats' からマスクされています:
##
## filter
##
## 以下のオブジェクトは 'package:base' からマスクされています:
##
## cbind, rbind
library(geepack)
library(ggplot2)
library(cobalt)
## cobalt (Version 4.4.1, Build Date: 2022-11-03)
library(tableone)
library(sandwich)
library(survey)
## 要求されたパッケージ grid をロード中です
## 要求されたパッケージ Matrix をロード中です
##
## 次のパッケージを付け加えます: 'Matrix'
##
## 以下のオブジェクトは 'package:tidyr' からマスクされています:
##
## expand, pack, unpack
##
## 要求されたパッケージ survival をロード中です
##
## 次のパッケージを付け加えます: 'survey'
##
## 以下のオブジェクトは 'package:graphics' からマスクされています:
##
## dotchart
library(WeightIt)
library(twang)
## To reproduce results from prior versions of the twang package, please see the version="legacy" option described in the documentation.
library(naniar)
pacman::p_load(norm2, miceadds, lmtest, car, ROCR, pROC,future,furrr)
データ読み込み
#data <- read_excel("varix_icu_ok_3.xlsx")
data <- read_excel("varix_icu_ok_3_0926.xlsx")
データの整理
df <-
data|> #miceパッケージが順序ありの因子型でないと読めないためこれを指定。
mutate(
hosp_id=as.integer(hosp_id),
year=as.integer(year),
pt_id=as.integer(pt_id),
ad_num=as.integer(ad_num),
antibio_exposure=as.integer(antibio_exposure), #geeglmを回すにはfactorでは回らない
antibio_type_a= factor(antibio_type_a, levels = c("a", "b","c","d","e","f","g","h","i","99")),
antibio_type_b= factor(antibio_type_b, levels = c("c","d","f","h","i","99")),
antibio_term= as.integer(antibio_term ),
age_num=as.integer(age_num),
age_cate=factor(age_cate,levels = c("0", "1", "2", "3")),
sex= factor(sex, levels = c("M", "F")),
smoking= as.integer(smoking),
brthel_cate= factor(brthel_cate, levels = c("0", "1", "2")),
child_numl= as.integer(child_numl),
child_score=factor(child_score, levels = c("a", "b", "c")),
jcs_all=factor(jcs_all, levels = c("0", "1", "2","3","10","20","30","100","200","300")),
cci_num=as.integer(cci_num),
malignancy=factor(malignancy),
hd=factor(hd),
hcc=factor(hcc),
alocohol=factor(alocohol),
past_varix_rup=factor(past_varix_rup),
antiplate_user_01=factor(antiplate_user_01),
anticoag_user01=factor(anticoag_user01),
nsaids_user01=factor(nsaids_user01),
steroid_user01=factor(steroid_user01),
ppi_user01=factor(ppi_user01),
beta_user01=factor(beta_user01),
vaso=factor(vaso),
map_day0= as.integer(map_day0),
shock=factor(shock),
alb_cate= factor(alb_cate, levels = c("0", "1", "2")),
pt_cate= factor(pt_cate, levels = c("0", "1", "2")),
aptt_cate=factor(aptt_cate,levels = c("0", "1", "2")),
eGFR30=factor(eGFR30),
outcome=factor(outcome),
death_day2=factor(death_day2),
rebleed_end_hemo=factor(rebleed_end_hemo),
sbp=factor(sbp),
infection=factor(infection),
infection_all=factor(infection_all),
los=as.integer(los),
cdi=factor(cdi)
)
多重代入のロード
load("impglm.Rdata")
imputed_data <- complete(impglm, 1)
abまとめ
library(dplyr)
# `child_score` をフィルタリングして 'a' および 'b' を取得
filtered_data <- imputed_data %>% filter(child_score %in% c("a", "b"))
# Propensity score modelの適合
propensity_model <- glm(antibio_exposure ~ age_cate + sex + brthel_cate + child_numl + cci_num + malignancy + hcc + alocohol + past_varix_rup + anticoag_user01 + nsaids_user01 + ppi_user01 + beta_user01 + vaso + map_day0 + shock + t_bil + ast + alt + wbc + hb + plt + alb + eGFR30 + crp + pt_cate + aptt_cate,
data = filtered_data,
family = binomial("logit"))
# Propensity scoresを計算
ps <- predict(propensity_model, type = "response", newdata = filtered_data)
# sATEのためのstabilized weightsを計算
treatment_prob <- mean(filtered_data$antibio_exposure)
stabilized_weights <- ifelse(filtered_data$antibio_exposure == 1, treatment_prob/ps, (1-treatment_prob)/(1-ps))
# Use the stabilized weights to fit the outcome model
iptw_model <- glm(outcome ~ antibio_exposure, data = filtered_data, weights = stabilized_weights, family = binomial("logit"))
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
# 結果を取得
estimate <- coef(iptw_model)[2]
std_error <- coef(summary(iptw_model))[2, "Std. Error"]
conf_int <- confint(iptw_model, level = 0.95, method = "Wald")
## Waiting for profiling to be done...
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
# Odds ratioとconfidence intervalsを計算
or <- exp(estimate)
lower <- exp(estimate - 1.96 * std_error)
upper <- exp(estimate + 1.96 * std_error)
# p-valueを計算
p <- 2 * (1 - pnorm(abs(estimate / std_error)))
# 結果をdata frameに保存
result_a_b_sATE <- data.frame(
Child_Score = "a,b",
OR = or,
Lower_CI = lower,
Upper_CI = upper,
P_value = p
)
print(result_a_b_sATE)
## Child_Score OR Lower_CI Upper_CI P_value
## antibio_exposure a,b 0.9009794 0.4168081 1.947572 0.7909115
c
library(dplyr)
# `child_score` をフィルタリングして 'c' を取得
imputed_data_c <- imputed_data %>% filter(child_score == "c")
# Propensity score modelの適合
propensity_model_c <- glm(antibio_exposure ~ age_cate + sex + brthel_cate + child_numl + cci_num + malignancy + hcc + alocohol + past_varix_rup + anticoag_user01 + nsaids_user01 + ppi_user01 + beta_user01 + vaso + map_day0 + shock + t_bil + ast + alt + wbc + hb + plt + alb + eGFR30 + crp + pt_cate + aptt_cate,
data = imputed_data_c,
family = binomial("logit"))
# Propensity scoresを計算
ps_c <- predict(propensity_model_c, type = "response", newdata = imputed_data_c)
# sATEのためのstabilized weightsを計算
treatment_prob_c <- mean(imputed_data_c$antibio_exposure)
stabilized_weights_c <- ifelse(imputed_data_c$antibio_exposure == 1, treatment_prob_c/ps_c, (1-treatment_prob_c)/(1-ps_c))
# Use the stabilized weights to fit the outcome model
iptw_model_c <- glm(outcome ~ antibio_exposure, data = imputed_data_c, weights = stabilized_weights_c, family = binomial("logit"))
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
# 結果を取得
estimate_c <- coef(iptw_model_c)[2]
std_error_c <- coef(summary(iptw_model_c))[2, "Std. Error"]
conf_int_c <- confint(iptw_model_c, level = 0.95, method = "Wald")
## Waiting for profiling to be done...
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
# Odds ratioとconfidence intervalsを計算
or_c <- exp(estimate_c)
lower_c <- exp(estimate_c - 1.96 * std_error_c)
upper_c <- exp(estimate_c + 1.96 * std_error_c)
# p-valueを計算
p_c <- 2 * (1 - pnorm(abs(estimate_c / std_error_c)))
# 結果をdata frameに保存
result_c_sATE <- data.frame(
Child_Score = "c",
OR = or_c,
Lower_CI = lower_c,
Upper_CI = upper_c,
P_value = p_c
)
print(result_c_sATE)
## Child_Score OR Lower_CI Upper_CI P_value
## antibio_exposure c 1.905181 0.9607718 3.777917 0.0649754
library(dplyr)
# `child_score` をフィルタリングして 'a' を取得
data_a <- imputed_data %>% filter(child_score == "a")
# 各因子変数のレベルの数を計算
factor_vars <- sapply(data_a, is.factor) # 因子変数を識別
level_counts <- sapply(data_a[, factor_vars], function(x) length(unique(x)))
print(level_counts)
## antibio_type_a antibio_type_b age_cate sex
## 8 2 4 2
## brthel_cate child_score jcs_all malignancy
## 3 1 3 2
## hd hcc alocohol past_varix_rup
## 2 2 2 2
## antiplate_user_01 anticoag_user01 nsaids_user01 steroid_user01
## 2 2 1 1
## ppi_user01 beta_user01 vaso shock
## 2 2 2 2
## alb_cate eGFR30 pt_cate aptt_cate
## 3 2 2 1
## outcome death_day2 rebleed_end_hemo sbp
## 2 2 2 2
## infection infection_all cdi
## 2 2 2
a ステロイド、nsaids、aptt cateは抜かないと回らない。
library(dplyr)
# `child_score` をフィルタリングして 'a' を取得
imputed_data_a <- imputed_data %>% filter(child_score == "a")
# Propensity score modelの適合
propensity_model_a <- glm(antibio_exposure ~ age_cate + sex + brthel_cate + child_numl + cci_num + malignancy + hcc + alocohol + past_varix_rup + anticoag_user01 + ppi_user01 + beta_user01 + vaso + map_day0 + shock + t_bil + ast + alt + wbc + hb + plt + alb + eGFR30 + crp + pt_cate,
data = imputed_data_a,
family = binomial("logit"))
# Propensity scoresを計算
ps_a <- predict(propensity_model_a, type = "response", newdata = imputed_data_a)
# sATEのためのstabilized weightsを計算
treatment_prob_a <- mean(imputed_data_a$antibio_exposure)
stabilized_weights_a <- ifelse(imputed_data_a$antibio_exposure == 1, treatment_prob_a/ps_a, (1-treatment_prob_a)/(1-ps_a))
# Use the stabilized weights to fit the outcome model
iptw_model_a <- glm(outcome ~ antibio_exposure, data = imputed_data_a, weights = stabilized_weights_a, family = binomial("logit"))
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
# 結果を取得
estimate_a <- coef(iptw_model_a)[2]
std_error_a <- coef(summary(iptw_model_a))[2, "Std. Error"]
conf_int_a <- confint(iptw_model_a, level = 0.95, method = "Wald")
## Waiting for profiling to be done...
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
# Odds ratioとconfidence intervalsを計算
or_a <- exp(estimate_a)
lower_a <- exp(estimate_a - 1.96 * std_error_a)
upper_a <- exp(estimate_a + 1.96 * std_error_a)
# p-valueを計算
p_a <- 2 * (1 - pnorm(abs(estimate_a / std_error_a)))
# 結果をdata frameに保存
result_a_sATE <- data.frame(
Child_Score = "a",
OR = or_a,
Lower_CI = lower_a,
Upper_CI = upper_a,
P_value = p_a
)
print(result_a_sATE)
## Child_Score OR Lower_CI Upper_CI P_value
## antibio_exposure a 0.8665251 0.1023304 7.337659 0.8954255
b
library(dplyr)
# `child_score` をフィルタリングして 'b' を取得
imputed_data_b <- imputed_data %>% filter(child_score == "b")
# Propensity score modelの適合
propensity_model_b <- glm(antibio_exposure ~ age_cate + sex + brthel_cate + child_numl + cci_num + malignancy + hcc + alocohol + past_varix_rup + anticoag_user01 + nsaids_user01 + ppi_user01 + beta_user01 + vaso + map_day0 + shock + t_bil + ast + alt + wbc + hb + plt + alb + eGFR30 + crp + pt_cate + aptt_cate,
data = imputed_data_b,
family = binomial("logit"))
# Propensity scoresを計算
ps_b <- predict(propensity_model_b, type = "response", newdata = imputed_data_b)
# sATEのためのstabilized weightsを計算
treatment_prob_b <- mean(imputed_data_b$antibio_exposure)
stabilized_weights_b <- ifelse(imputed_data_b$antibio_exposure == 1, treatment_prob_b/ps_b, (1-treatment_prob_b)/(1-ps_b))
# Use the stabilized weights to fit the outcome model
iptw_model_b <- glm(outcome ~ antibio_exposure, data = imputed_data_b, weights = stabilized_weights_b, family = binomial("logit"))
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
# 結果を取得
estimate_b <- coef(iptw_model_b)[2]
std_error_b <- coef(summary(iptw_model_b))[2, "Std. Error"]
conf_int_b <- confint(iptw_model_b, level = 0.95, method = "Wald")
## Waiting for profiling to be done...
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
# Odds ratioとconfidence intervalsを計算
or_b <- exp(estimate_b)
lower_b <- exp(estimate_b - 1.96 * std_error_b)
upper_b <- exp(estimate_b + 1.96 * std_error_b)
# p-valueを計算
p_b <- 2 * (1 - pnorm(abs(estimate_b / std_error_b)))
# 結果をdata frameに保存
result_b_sATE <- data.frame(
Child_Score = "b",
OR = or_b,
Lower_CI = lower_b,
Upper_CI = upper_b,
P_value = p_b
)
print(result_b_sATE)
## Child_Score OR Lower_CI Upper_CI P_value
## antibio_exposure b 0.7932464 0.3266856 1.926133 0.6088369
interaction ab vs c
# 単一の完成データセットを取得
imputed_data <- complete(impglm, 1)
# `child_score` を「a, b」と「c」で2つのカテゴリに再カテゴリ化
imputed_data$child_grouped <- ifelse(imputed_data$child_score %in% c("a", "b"), "ab", "c")
# GLM propensity score modelを適合
propensity_model <- glm(antibio_exposure ~ age_cate + sex + brthel_cate + child_numl + cci_num + malignancy + hcc + alocohol + past_varix_rup + anticoag_user01 + nsaids_user01 + ppi_user01 + beta_user01 + vaso + map_day0 + shock + t_bil + ast + alt + wbc + hb + plt + alb + eGFR30 + crp + pt_cate + aptt_cate,
data = imputed_data,
family = binomial("logit"))
# Propensity scoresを計算
ps <- predict(propensity_model, type = "response", newdata = imputed_data)
imputed_data$ps <- ps
# sATEのためのstabilized weightsを計算
treatment_prob <- mean(imputed_data$antibio_exposure)
stabilized_weights <- ifelse(imputed_data$antibio_exposure == 1, treatment_prob/ps, (1-treatment_prob)/(1-ps))
# stabilized weightsを用いてlogistic regression modelを適合
iptw_model <- glm(outcome ~ antibio_exposure * child_grouped, data = imputed_data, weights = stabilized_weights, family = binomial("logit"))
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
# 交互作用項のp値を取得
interaction_p <- coef(summary(iptw_model))["antibio_exposure:child_groupedc", "Pr(>|z|)"]
print(paste("Interaction P-value:", round(interaction_p, 4)))
## [1] "Interaction P-value: 0.52"
library(dplyr)
# Child-Pughスコアを因子として扱う
imputed_data$child_score <- as.factor(imputed_data$child_score)
# 交互作用項を含むpropensity score modelの適合
propensity_model_interaction <- glm(antibio_exposure ~ age_cate + sex + brthel_cate + child_numl + cci_num + malignancy + hcc + alocohol + past_varix_rup + anticoag_user01 + nsaids_user01 + ppi_user01 + beta_user01 + vaso + map_day0 + shock + t_bil + ast + alt + wbc + hb + plt + alb + eGFR30 + crp + pt_cate + aptt_cate + child_score,
data = imputed_data,
family = binomial("logit"))
# Propensity scoresを計算
ps_interaction <- predict(propensity_model_interaction, type = "response", newdata = imputed_data)
# sATEのためのstabilized weightsを計算
treatment_prob <- mean(imputed_data$antibio_exposure)
stabilized_weights_interaction <- ifelse(imputed_data$antibio_exposure == 1, treatment_prob/ps_interaction, (1-treatment_prob)/(1-ps_interaction))
# 交互作用項を持つモデルを適合
iptw_interaction_model <- glm(outcome ~ antibio_exposure * child_score,
data = imputed_data,
weights = stabilized_weights_interaction,
family = binomial("logit"))
## Warning in eval(family$initialize): non-integer #successes in a binomial glm!
# 結果のサマリー
summary(iptw_interaction_model)
##
## Call:
## glm(formula = outcome ~ antibio_exposure * child_score, family = binomial("logit"),
## data = imputed_data, weights = stabilized_weights_interaction)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.2540 -0.4482 -0.3550 -0.2917 3.6350
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.1749 0.5105 -6.219 4.99e-10 ***
## antibio_exposure -0.2997 1.0748 -0.279 0.78034
## child_scoreb 0.4933 0.5617 0.878 0.37976
## child_scorec 1.7854 0.5489 3.253 0.00114 **
## antibio_exposure:child_scoreb 0.4435 1.1511 0.385 0.70002
## antibio_exposure:child_scorec 0.7035 1.1277 0.624 0.53273
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 529.99 on 789 degrees of freedom
## Residual deviance: 487.17 on 784 degrees of freedom
## AIC: 507.06
##
## Number of Fisher Scoring iterations: 6
# 交互作用項のp値を取得
interaction_p_value <- coef(summary(iptw_interaction_model))["antibio_exposure:child_scorec", "Pr(>|z|)"]
print(paste("交互作用項のp値: ", interaction_p_value))
## [1] "交互作用項のp値: 0.532727195257351"