R:使用 MatchIT 进行最近邻匹配
R: Nearest neighbour matching with MatchIT
我想在 R 中使用 MatchIt 进行最近邻匹配。
到目前为止,我使用了以下代码:
Matching<- matchit(Treatment ~ Size+ Age + Expenses, data=data, method = "nearest", distance="glm", replace=TRUE)
我有两个问题:
问题 1.)
当我再次 运行 这段代码和 运行 Matching
时,我得到了一个总结。
然后一行说
A matchit object
- method: 1:1 nearest neighbor matching with replacement
如果需要,我希望多次匹配相同的控制观察。
上面的代码是这样做的吗?
我很困惑,因为它说 1:1 最近邻匹配与替换,我不知道它现在是否只使用控制组中的观察不超过一次,因为句子中的 1:1 部分。但是,由于我在代码中使用了 replace=true
,我认为这正是这样做的,因此可以多次匹配对照组中的一个观察结果。
有人能解释一下我的理解是否正确吗?
问题2.)
拥有后运行
Matching<- matchit(Treatment ~ Size+ Age + Expenses, data=data, method = "nearest", distance="glm", replace=TRUE)
我想估计平均治疗效果。
我使用以下文档作为如何估算它的参考:
https://cran.r-project.org/web/packages/MatchIt/vignettes/estimating-effects.html#after-pair-matching-with-replacement
但是,我想按子类和 id 使用集群标准错误。
因此,我需要先写代码:
Matching_gm <- get_matches(Matching)
当我查看 Matching_gm 的权重时,它们总是 1。但是,当我 运行 summary(Matching$weigths)
时,有很多权重与 1 不同。
为什么当我使用 get_matches
时权重会改变?据我所知,应该不是这样的。
之所以称为1:1匹配,是因为每个被处理的单元得到一个匹配,但是控制单元有可能被重复用作多个被处理单元的匹配。如果您将 ratio
设置为 1 以外的其他值,您将进行 k:1 匹配,其中每个处理过的单元得到 k 个匹配项,由可用于其他处理过的单元的控件组成。
get_matches()
每次匹配时都会为每个单元生成一行。如果一个控制单元匹配两次(即匹配到两个不同的处理单元),它将在 get_matches()
输出中有两行,每行的权重为 1,但在 [=13] 中的权重为 2 =] 输出(尽管这个权重可能被缩放为不同于 2)。如果您使用 match.data()
而不是 get_matches()
,您将看到每个单元只接收一行并且每个控制单元的权重与 matchit()
输出中的相同。
我想在 R 中使用 MatchIt 进行最近邻匹配。 到目前为止,我使用了以下代码:
Matching<- matchit(Treatment ~ Size+ Age + Expenses, data=data, method = "nearest", distance="glm", replace=TRUE)
我有两个问题:
问题 1.)
当我再次 运行 这段代码和 运行 Matching
时,我得到了一个总结。
然后一行说
A matchit object
- method: 1:1 nearest neighbor matching with replacement
如果需要,我希望多次匹配相同的控制观察。
上面的代码是这样做的吗?
我很困惑,因为它说 1:1 最近邻匹配与替换,我不知道它现在是否只使用控制组中的观察不超过一次,因为句子中的 1:1 部分。但是,由于我在代码中使用了 replace=true
,我认为这正是这样做的,因此可以多次匹配对照组中的一个观察结果。
有人能解释一下我的理解是否正确吗?
问题2.)
拥有后运行
Matching<- matchit(Treatment ~ Size+ Age + Expenses, data=data, method = "nearest", distance="glm", replace=TRUE)
我想估计平均治疗效果。 我使用以下文档作为如何估算它的参考: https://cran.r-project.org/web/packages/MatchIt/vignettes/estimating-effects.html#after-pair-matching-with-replacement 但是,我想按子类和 id 使用集群标准错误。 因此,我需要先写代码:
Matching_gm <- get_matches(Matching)
当我查看 Matching_gm 的权重时,它们总是 1。但是,当我 运行 summary(Matching$weigths)
时,有很多权重与 1 不同。
为什么当我使用 get_matches
时权重会改变?据我所知,应该不是这样的。
之所以称为1:1匹配,是因为每个被处理的单元得到一个匹配,但是控制单元有可能被重复用作多个被处理单元的匹配。如果您将
ratio
设置为 1 以外的其他值,您将进行 k:1 匹配,其中每个处理过的单元得到 k 个匹配项,由可用于其他处理过的单元的控件组成。get_matches()
每次匹配时都会为每个单元生成一行。如果一个控制单元匹配两次(即匹配到两个不同的处理单元),它将在get_matches()
输出中有两行,每行的权重为 1,但在 [=13] 中的权重为 2 =] 输出(尽管这个权重可能被缩放为不同于 2)。如果您使用match.data()
而不是get_matches()
,您将看到每个单元只接收一行并且每个控制单元的权重与matchit()
输出中的相同。