2016-04-27 5 views
0

Я хочу оценить средний эффект обработки обработанного (ATT) с помощью . Соответствие функция {Matching } в R, с оценкой склонности как расстояние и взаимно однозначное совпадение в качестве метода сопоставления. В той же сопоставимой модели я хочу использовать точный аргумент и применить его к одной конкретной переменной.Как применить точный аргумент функции Match в R к одной переменной, когда я также использую оценку склонности

После того, как запустил функцию логита оценить счет предрасположенности следующим образом:

glm1 <- glm(treat~AREA_HA + SUMVIV_TOT + SUMPOB + COUNT + luz + potable + cocina_ele + altitudeme + river_mean + 
      paved_mean + unpaved_me + VDep_mean + VNacional_ + VVecinal_m + temp_mean + rain_mean + dccpp_mean + 
      distfloss_ + idh_mean + bmass_mean + slope_mean + distANP_me + ker10_mean + titled + for10 + for10_per + 
      floss_yr001 + floss_yr002 + floss_yr003 + floss_yr004 + floss_yr005 + floss_yr006 + floss_yr007 + floss_yr008 + 
      floss_yr009 + floss_yr010, family=binomial, data=comm.vars6) 

Я пытался применить точный аргумент переменного номер 26 («под названием») при выполнении матча функции , Код выглядит следующим образом:

rr1 <- Match(Y=Y, Tr=Tr, X=glm1$fitted, exact = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0), M=1, replace = T) 

Тем не менее я получил следующее предупреждение:

Warning message: 
In Match(Y = Y, Tr = Tr, X = glm1$fitted, exact = c(0, 0, 0, 0, : 
length of exact != ncol(X). Ignoring exact option 

Я считаю, что это проблема, связанная со структурой Х (= glm1 $ установлен). Потому что, когда я просто использовать следующую матрицу:

Z<-with(comm.vars6,data.frame(AREA_HA , SUMVIV_TOT , SUMPOB , COUNT , luz , potable , cocina_ele , altitudeme , river_mean , 
       paved_mean , unpaved_me , VDep_mean , VNacional_ , VVecinal_m , temp_mean , rain_mean , dccpp_mean , 
       distfloss_ , idh_mean , bmass_mean , slope_mean , distANP_me , ker10_mean , titled , for10 , floss_yr001 
       , floss_yr002 , floss_yr003 , floss_yr004 , floss_yr005 , floss_yr006 , floss_yr007 , floss_yr008 , 
       floss_yr009 , floss_yr010 , for10_per)) 

, как X и повторно запустить функцию Match:

rr1 <- Match(Y=Y, Tr=Tr, X=Z, exact = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0), M=1, replace = T) 

Он отлично работает!

Как должен выглядеть код, чтобы использовать как показатель склонности (установленный glm1 $), так и точный аргумент = 1 для «под заголовком»?

+1

Добро пожаловать в SO !, это предупреждение, 'length of exact! = Ncol (X). Игнорируя точную опцию ', указывает, что' length' входного вектора 'exact' не соответствует' length' 'glm $ installed'. Не могли бы вы обновить сообщение с помощью N (количество поясняющих переменных), M (длина входного вектора до «точного». И если возможно выход 'dput (head (comm.vars6,5))' – OdeToMyFiddle

+0

Как говорит Осссан, это ваша проблема, glm $ installed создает вектор, поэтому кормление точного аргумента любым вектором, большим, чем 1, не имеет смысла, когда единственным совпадающим ковариатом, который вы используете, является PS. Если вы хотите выполнить точное совпадение с некоторыми переменными, а также включить PS, построить data.frame для подачи аргумента X, который также включает в себя точные совпадения. – lmo

ответ

0

Вот грубый набросок того, что функция должна выглядеть, как с помощью двух переменных: PS (расстояние спички) и названный (точное совпадение):

# get X mat 
myMatchMat <- data.frame("PS"=glm1$fitted, "trim"=comm.vars6$trim) 
# match 
rr1 <- Match(Y=Y, Tr=Tr, X=X, exact = c(0, 1), M=1, replace = T)) 

Потому что вы не предоставили набор данных, я могу 't проверить код, так что может быть пара изменений, которые вы должны сделать, но так работает функция Match.

+0

Спасибо, Imo, это сработало отлично. @Osssan –