所以下面從匹配包,特別是GenMatch例子的例子。 This continues on from a previous question使用GenMatch標準偏差,以鼓勵更多對
繼GenMatch
library(Matching)
data(lalonde)
attach(lalonde)
X = cbind(age, educ, black, hisp, married, nodegr, u74, u75, re75, re74)
BalanceMat <- cbind(age, educ, black, hisp, married, nodegr, u74, u75, re75, re74,
I(re74*re75))
genout <- GenMatch(Tr=treat, X=X, BalanceMatrix=BalanceMat, estimand="ATE", M=1,
pop.size=16, max.generations=10, wait.generations=1)
genout$matches
genout$ecaliper
Y=re78/1000
mout <- Match(Y=Y, Tr=treat, X=X, Weight.matrix=genout)
summary(mout)
的例子中,我們看到185治療觀察與270非治療觀察配對。
我們可以產生與處理案件的權利由表及其左側年齡和控制情況和年齡:
pairs <- data.frame(mout$index.treated, lalonde$age[mout$index.treated], mout$index.control, lalonde$age[mout$index.control])
現在,關於從GenMatch
產生的Weight.Matrix
文學是非常神祕的並沒有解釋這些值代表什麼。我有一個開放的問題here。現在讓我們說我們想放鬆匹配,以便在年齡標準上進行更靈活的配對。
我們看到,sd(lalonde$age)
給了我們7年我們的數據的SD。
所以我想Weight.matrix
考慮到這一點。我想爲age
變量使用1 SD的限制,並因此返回更多對,然後返回原來的185-270。
我的猜測是產生再進行第二次GenMatch
功能與我的代碼繼續。所以我用:
genout <- GenMatch(Tr=treat, X=X, BalanceMatrix=BalanceMat, estimand="ATE",
pop.size=1000, max.generations=10, wait.generations=1,
caliper=c(2,1,1,1,1,1,1,1,1,1))
但是,這並不會顯着增加我返回的對數。
我要去的地方錯了
這不是很清楚自己想要什麼。只有185個處理和260個未處理的觀察,Match功能試圖執行1對1匹配。有超過185個未加權比賽的原因是因爲有超過1個未經處理的個人誰是同樣好的比賽的關係。如果您想要每個人超過1個未經處理的人,則需要使用M參數進行匹配。例如'mout < - 匹配(Y = Y,Tr =治療,X = X,Weight.matrix = genout,M = 2)'旨在每治療個體返回2個未經處理的匹配。如果你想要2,你需要使用'ties = FALSE'。 –
如果您想放鬆年齡標準,您可以改變權重矩陣中的參數,但不會影響您獲得的匹配數量。 –