rm(list = ls())
library(boot)       
library(readxl)
mydata <-read_excel("xlsx")
summary(mydata)

#
model_part1 <- glm(有无支出 ~.,
                       data = mydata, 
                       family = binomial(link = "logit"))
summary(model_part1)
mydata$prob_cost <- predict(model_part1, type = "response")
##

####
library(car)

# 
vif_results <- vif(model_part1)
print(vif_results)
# 
options(digits =5)
df_positive <- subset(mydata, 有无支出 == "1")

##
str(df_positive)
df_positive$log_cost <- log(df_positive$你的费用)
model_ols <- lm(log_cost ~., data = df_positive)
summary(model_ols)
coef_result <- coef(summary(model_ols))  
#


log_predictions <- predict(model_ols, newdata = mydata)
# 
sigma <- summary(model_ols)$sigma
# 
smearing_factor <- mean(exp(residuals(model_ols)))
mydata$corrected_predictions <- exp(log_predictions) * smearing_factor
mydata$expected_cost <- mydata$prob_cost * mydata$corrected_predictions

# 
mean_cost_injury <- mean(mydata$expected_cost[mydata$injury == 2], na.rm = TRUE)
mean_cost_no_injury <- mean(mydata$expected_cost[mydata$injury == 1], na.rm = TRUE)

# 
cost_difference <- mean_cost_injury - mean_cost_no_injury

# 输出结果
cat("伤害人群平均期望医疗费用:", round(mean_cost_injury, 2), "\n")
cat("非伤害人群平均期望医疗费用:", round(mean_cost_no_injury, 2), "\n")
cat("伤害相关的直接医疗费用差异:", round(cost_difference, 2), "\n")

#
set.seed(123) # 
n_boot <- 1000 #
boot_diffs <- numeric(n_boot)

for(i in 1:n_boot) {
          # 
          boot_sample <- mydata[sample(nrow(mydata), replace = TRUE), ]
          
          # 
          boot_injury <- mean(boot_sample$expected_cost[boot_sample$injury == 2], na.rm = TRUE)
          boot_no_injury <- mean(boot_sample$expected_cost[boot_sample$injury == 1], na.rm = TRUE)
          boot_diffs[i] <- boot_injury - boot_no_injury
}

# 
ci <- quantile(boot_diffs, c(0.025, 0.975))

# 
p_value <- 2 * min(mean(boot_diffs <= 0), mean(boot_diffs >= 0))

