[英]propensity score matching in R
我正在做一場比賽。 我已經創建了一個基本數據庫來學習,並且我有這個數據庫:
propScore
group dep public
1 0 1 8
2 0 2 7
3 0 3 6
4 0 4 7
5 1 1 8
6 1 2 7
7 1 3 6
8 1 4 7
9 1 5 2
10 1 6 3
我使用:
m.out = matchit(group ~ dep + public, data = propScore, method = "nearest", ratio = 1)
但我得到了這場比賽:
1
5 NA
6 "1"
7 "4"
8 NA
9 "3"
10 "2"
但我認為正確的做法是:
1
5 "1"
6 "2"
7 "3"
8 "4
9 NA
10 NA
我究竟做錯了什么? 謝謝
matchit
默認的工作方式是它使用協變量處理的邏輯回歸來估計每個單元的傾向得分。 此傾向得分存儲在m.out
的距離屬性中。 我們可以看一下包含傾向得分的數據:
> cbind(propScore, ps = m.out$distance) group dep public ps 1 0 1 8 0.3903012 2 0 2 7 0.5294948 3 0 3 6 0.6642472 4 0 4 7 0.4792577 5 1 1 8 0.3903012 6 1 2 7 0.5294948 7 1 3 6 0.6642472 8 1 4 7 0.4792577 9 1 5 2 0.9585154 10 1 6 3 0.9148828
您可能會注意到 6 和 2 具有相同的傾向得分,因為它們具有相同的協變量值,但它們彼此不匹配。 這看起來很奇怪,但它與不替換匹配時找到匹配項的順序有關。
默認情況下, matchit
按照處理單元的傾向得分的降序執行匹配。 第 9 單元的傾向得分最高 (.959),因此首先匹配(與第 3 單元匹配)。 接下來是 10 號機組,它與 2 號機組匹配,因為 3 號機組已經與 9 號機組匹配,並且您無需更換即可匹配(這意味着每個控制單元只能使用一次)。 即使單元 10 和單元 2 彼此相距很遠,單元 2 確實是在使用單元 3 之后最接近單元 10 的單元。 到單元 6 時,只有單元 1 和單元 4 可用,因此單元 6 與單元 1 匹配。
以這種方式匹配的目的是為那些具有最高傾向得分的處理單元提供找到相對接近匹配的最佳機會,因為這些單元可能最難找到匹配。 然而,這種策略並不總是有效,有時你會得到奇怪的匹配,就像你發現的那樣,兩個相同的單位彼此不匹配。
您可以通過設置m.order = "smallest"
來更改匹配順序,它按照傾向得分的升序匹配。 您應該會發現,使用此選項,單元 5 與單元 1 匹配,單元 6 與單元 2 匹配。您還可以設置m.order = "random"
,它以隨機順序匹配。 如果您使用此選項,請確保使用set.seed()
設置種子,以便您的結果可復制。
正如評論中提到的,您還可以通過設置replace = TRUE
來執行替換匹配。 因為現在可以重復使用控制單元進行多次匹配,所以單元 10、9 和 7 都將與單元 3 匹配,而單元 6 將與其雙胞胎單元 2 匹配。
您還可以設置卡尺; 這定義了允許匹配的最大距離。 在您最初的matchit()
調用中,單元 10 與其最接近的匹配單元 3 相差 .25,這是一個巨大的距離,使得這些單元彼此不太相似。 您可以將允許的匹配限制在彼此之間的一定距離內,以傾向得分的標准差來衡量。 如果您設置較窄的卡尺,例如caliper =.15
,則只會匹配彼此接近的單位,而在卡尺內沒有匹配的任何處理過的單位都將不匹配。 使用 15 的卡尺,第 9 和第 10 單元不接受匹配,其他處理單元與對照組中的雙胞胎匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.