gpt4 book ai didi

r - 如何在 R 中使用 matchit() 指定样本大小?

转载 作者:行者123 更新时间:2023-12-02 04:30:49 25 4
gpt4 key购买 nike

我有一个包含 120 个实验对象和 147 个对照的数据框。我想让两组 100 人在年龄、性别和 BMI 上匹配。

使用 MatchIt 包:

match.it <- matchit(group ~ age + sex + bmi , data, method="nearest", ratio=1)
summary(match.it)$nn #return sample sizes
Control Treated
All 147 120
Matched 120 120
Unmatched 27 0
Discarded 0 0

您可以看到它会自动返回等于最小原始样本大小的样本大小。我想强制它只保留 100 个控制和 100 个处理过的样本,但我不想指定是哪些。我已经搜索了文档,但没有看到指定匹配样本大小的方法(仅处理与控制的比率)。

  1. 有没有我忽略的方法?
  2. 如果没有,有没有办法使用 match.data() 返回的“距离”指标来做到这一点?
  3. 如果 MatchIt 不是适合这个的包,您知道更好的包吗?

谢谢


更新:我能够使用 summary(match.it)$match.matrix 返回匹配的主题并将它们放入新的数据框中。我还包括了它们的距离并计算了每对距离之间的差异。如果我要用它来选择 100 对,我应该选择距离差异最小的那些,还是平均距离最小的,或者其他的。我对数学不够熟悉,无法确切知道如何解释距离。

编辑:修复了代码中的错字

最佳答案

我将简要说明我是如何解决我的问题的,然后在我有更多时间时尝试返回更详细的说明,包括一些代码。

matchit() 函数将按行号 [["matched.matrix"]] 返回匹配案例列表,而 match.data() 函数将返回具有原始数据的匹配案例,以及距离度量每个案例都是通过最近邻法计算的。

请记住,我真的不知道如何解释距离度量,所以我尝试了几种不同的方法来挑选最好的 100 对。我用每一对连续制作了一个数据框,并计算了距离的绝对差和距离的平均值。然后我测试了 100 对的不同子集,用于治疗组和对照组之间的年龄、性别和 BMI 的 t 检验。这五个小组是; 1. 随机选择 100 对, 2. 基于平均距离的前 100 对, 3. 基于平均距离的后 100 对, 4. 基于距离差异的前 100 对,以及 5. 基于距离差异的后 100 对。

在我的数据集中,第 5 组产生了最好的结果(各组之间在年龄、性别和 BMI 方面的差异最小)。我不确定这些结果是否会扩展到其他数据集,但如果更接近的差异意味着更接近匹配的案例,那是有道理的。

抱歉,如果我的冗长解释不是很清楚。我会尝试稍后回来编辑它以添加示例代码并清理它。

关于r - 如何在 R 中使用 matchit() 指定样本大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48997122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com