Skip to content

Latest commit

 

History

History
127 lines (99 loc) · 5.23 KB

README.md

File metadata and controls

127 lines (99 loc) · 5.23 KB

kaRma: 因果推断大杂烩😛

kaRma 是一个用于因果推断分析的 R 包,提供多种方法来分析数据中的因果关系,并支持使用 MICE 进行缺失数据插补

为什么要叫 kaRma(因果报应)呢?因为学医是每个人应得的报应😭

什么是因果推断?

因果推断是统计学和数据科学中的一个重要概念,旨在确定一个变量(因变量)是否受到另一个变量(自变量)的影响

简单来说,因果推断的目标是回答“如果我改变某个因素,结果会发生怎样的变化?”

下面举个简单的🌰

假设我们想研究嚼槟榔是否会导致口腔癌(弗兰特色),我们可以收集一组数据,包括嚼槟榔的习惯和口腔癌病例

在因果推断中,我们希望确定嚼槟榔是否是导致口腔癌的原因,还是存在其他混杂因素(如爱不爱嗦不嗦粉、出行坐不坐摩的等)影响了结果

通过因果推断的方法(如倾向评分匹配、回归不连续设计等),我们可以更清晰地了解嚼槟榔与口腔癌之间的关系

方法

以下是 kaRma 包中提供的因果推断方法及其介绍:

  1. 普通最小二乘法 (OLS)

    • 原理:通过最小化平方误差来估计因变量与自变量之间的线性关系
    • 优点:简单易懂,适用于线性关系
    • 缺点:对异常值敏感,假设误差项独立同分布
  2. 工具变量法 (IV)

    • 原理:使用一个或多个工具变量来解决因果关系中的内生性问题
    • 优点:能有效处理内生性
    • 缺点:工具变量的选择非常重要,错误的选择会导致偏差
  3. 广义线性模型 (GLM)

    • 原理:扩展 OLS,用于处理非正态分布的因变量
    • 优点:灵活,适用于多种数据类型
    • 缺点:模型复杂度增加,可能导致过拟合
  4. 倾向评分匹配 (PSM)

    • 原理:通过匹配相似特征的样本来减少选择偏差
    • 优点:能够控制多种混杂变量
    • 缺点:未能观察到的变量仍可能导致偏差
  5. 双重差分 (DID)

    • 原理:通过比较处理组和控制组在不同时间点的变化来估计因果效应
    • 优点:控制固定效应,适合自然实验
    • 缺点:需要平行趋势假设
  6. 断点回归 (RDD)

    • 原理:在一个阈值附近比较处理组与控制组的结果
    • 优点:能够提供局部的因果推断
    • 缺点:仅在阈值附近有效,外推性差
  7. 因果图模型

    • 原理:使用图形表示变量之间的因果关系
    • 优点:直观且易于理解因果结构
    • 缺点:构建图形需要领域知识
  8. 逆概率加权 (IPW)

    • 原理:通过为每个观测值分配权重来控制混杂变量
    • 优点:能够处理缺失数据
    • 缺点:模型依赖于准确的倾向评分估计
  9. 因果森林

    • 原理:通过随机森林方法进行因果推断
    • 优点:适用于复杂的高维数据
    • 缺点:模型解释性较差
  10. 贝叶斯因果推断

    • 原理:使用贝叶斯统计方法进行因果推断
    • 优点:能够处理不确定性
    • 缺点:计算复杂且对先验分布敏感
  11. 合成控制方法 (SCM)

    • 原理:通过构建一个合成控制组来评估政策或干预的影响
    • 优点:提供明确的比较基准
    • 缺点:对数据的要求较高,实施复杂

参数说明

  • data:输入数据集,要求是一个数据框(data.frame)
  • outcome_var:因变量的列名,表示要分析的结果
  • method:选择的因果推断方法,支持以下选项:
    • OLS:普通最小二乘法
    • IV:工具变量法
    • GLM:广义线性模型
    • PSM:倾向评分匹配
    • DID:双重差分
    • RDD:断点回归
    • Causal Graph:因果图模型
    • IPW:逆概率加权
    • Causal Forest:因果森林
    • Bayesian:贝叶斯因果推断
    • SCM:合成控制方法
  • treatment_var:处理变量的列名,表示施加影响的因素
  • covariates:协变量的列名,用于控制其他混杂因素
  • threshold:针对某些方法的阈值设定,默认值为 NULL
  • use_mice:是否使用 MICE 处理缺失数据,默认为 TRUE
  • m:指定插补次数,默认为 5
  • mice_methods:插补方法的列表,可自定义不同变量的插补方法
  • save_excel:是否将结果保存为 Excel 文件,默认为 TRUE
  • file_name:保存文件的名称,默认为 "results.xlsx"

使用方法

# 安装和加载 kaRma 包
install.packages("devtools")
devtools::install_github("andrelau0622/kaRma")
library(kaRma)

# 示例调用
result <- karma(data = your_data,
                outcome_var = "口腔癌",
                method = "OLS",
                treatment_var = "嚼槟榔",
                covariates = c("爱嗦粉", "坐摩的"),
                threshold = NULL,
                use_mice = TRUE,
                m = 5,
                mice_methods = list("var1" = "pmm", "var2" = "cart"),
                save_excel = TRUE,
                file_name = "results.xlsx")

# 查看结果
print(result)