如何在 R 中使用 matchit() 指定样本大小?
How do I specify sample size with matchit() in R?
我有一个包含 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
您可以看到它自动 returns 样本大小等于原始样本大小中的最小值。我想强制它只保留 100 个控制和 100 个处理过的样本,但我不想指定是哪些。我已经搜索了文档,但没有看到指定匹配样本大小的方法(仅处理与控制的比率)。
- 有没有我忽略的方法?
- 如果没有,是否有办法使用 'distance' 指标 return 由 match.data() 编辑?
- 如果 MatchIt 不是合适的包,您知道更好的包吗?
谢谢
更新:我能够 return 使用 summary(match.it)$match.matrix 匹配的主题并将它们放入新的数据框中。我还包括了它们的距离并计算了每对距离之间的差异。如果我要用它来选择 100 对,我应该选择距离差异最小的那些,还是平均距离最小的那些,或者其他什么。我对数学不够熟悉,不知道如何解释距离。
编辑:修正了代码中的错字
我将简要说明我是如何解决我的问题的,然后在我有更多时间时尝试返回更详细的说明,包括一些代码。
matchit() 函数将 return 按行号排列的匹配案例列表 [["matched.matrix"]] 而 match.data() 函数将 return将个案与原始数据相匹配,加上每个个案的距离度量(由最近邻法计算)。
请记住,我真的不知道如何解释距离度量,所以我尝试了几种不同的方法来挑选最好的 100 对。我用每一对连续制作了一个数据框,并计算了距离的绝对差和距离的平均值。然后,我测试了 100 对不同子集的 t-tests 治疗组和对照组之间的年龄、性别和 BMI。这五个小组是; 1. 随机选择 100 对, 2. 基于平均距离的前 100 对, 3. 基于平均距离的后 100 对, 4. 基于距离差异的前 100 对,以及 5. 基于距离差异的后 100 对。
在我的数据集中,第 5 组产生了最好的结果(年龄、性别和 BMI 组之间的显着差异最小)。我不确定这些结果是否会扩展到其他数据集,但如果更接近的差异意味着更接近匹配的案例,那是有道理的。
抱歉,如果我的冗长解释不是很清楚。我会尝试稍后回来编辑它以添加示例代码并清理它。
我有一个包含 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
您可以看到它自动 returns 样本大小等于原始样本大小中的最小值。我想强制它只保留 100 个控制和 100 个处理过的样本,但我不想指定是哪些。我已经搜索了文档,但没有看到指定匹配样本大小的方法(仅处理与控制的比率)。
- 有没有我忽略的方法?
- 如果没有,是否有办法使用 'distance' 指标 return 由 match.data() 编辑?
- 如果 MatchIt 不是合适的包,您知道更好的包吗?
谢谢
更新:我能够 return 使用 summary(match.it)$match.matrix 匹配的主题并将它们放入新的数据框中。我还包括了它们的距离并计算了每对距离之间的差异。如果我要用它来选择 100 对,我应该选择距离差异最小的那些,还是平均距离最小的那些,或者其他什么。我对数学不够熟悉,不知道如何解释距离。
编辑:修正了代码中的错字
我将简要说明我是如何解决我的问题的,然后在我有更多时间时尝试返回更详细的说明,包括一些代码。
matchit() 函数将 return 按行号排列的匹配案例列表 [["matched.matrix"]] 而 match.data() 函数将 return将个案与原始数据相匹配,加上每个个案的距离度量(由最近邻法计算)。
请记住,我真的不知道如何解释距离度量,所以我尝试了几种不同的方法来挑选最好的 100 对。我用每一对连续制作了一个数据框,并计算了距离的绝对差和距离的平均值。然后,我测试了 100 对不同子集的 t-tests 治疗组和对照组之间的年龄、性别和 BMI。这五个小组是; 1. 随机选择 100 对, 2. 基于平均距离的前 100 对, 3. 基于平均距离的后 100 对, 4. 基于距离差异的前 100 对,以及 5. 基于距离差异的后 100 对。
在我的数据集中,第 5 组产生了最好的结果(年龄、性别和 BMI 组之间的显着差异最小)。我不确定这些结果是否会扩展到其他数据集,但如果更接近的差异意味着更接近匹配的案例,那是有道理的。
抱歉,如果我的冗长解释不是很清楚。我会尝试稍后回来编辑它以添加示例代码并清理它。