2015-06-22 9 views
5

Ссылаясь на пакет Matching, мы рассмотрим пример, используя GenMatch.Какова весовая матрица, сгенерированная в пакете соответствия

Мы читаем, что Weight Matrix, который создается является матрицей, диагональ соответствует весу данного каждому переменному в X

Но мы не уверены, что значения, полученные представления - они связаны со стандартом отклонение.

Позволяет взять пример, приведенный в GenMatch

library(Matching) 
data(lalonde) 
attach(lalonde) 
#The covariates we want to match on 
X = cbind(age, educ, black, hisp, married, nodegr, u74, u75, re75, re74) 
#The covariates we want to obtain balance on 
BalanceMat <- cbind(age, educ, black, hisp, married, nodegr, u74, u75, re75, re74, 
I(re74*re75)) 
#Let's call GenMatch() to find the optimal weight to give each 
#covariate in 'X' so as we have achieved balance on the covariates in 
#'BalanceMat'. This is only an example so we want GenMatch to be quick 
#so the population size has been set to be only 16 via the 'pop.size' 
#option. This is *WAY* too small for actual problems. 
#For details see http://sekhon.berkeley.edu/papers/MatchingJSS.pdf. 
# 
genout <- GenMatch(Tr=treat, X=X, BalanceMatrix=BalanceMat, estimand="ATE", M=1, 
pop.size=16, max.generations=10, wait.generations=1) 

Тогда мы можем вывести Weight.matrix, который будет использоваться в дальнейшем для сопряжения данных

genout$Weight.matrix 

и в частности значения, присвоенного age

genout$Weight.matrix[1,1] 

Мы получаем значение ~ 205. Но что означает этот вес или представляет его?

Кроме того, если мы хотим рандомизировать порядок данных, значение постоянно меняется.

n <- 100 
P1 <- rep(NA, n) 
for (i in 1:n) { 

    lalonde <- lalonde[sample(1:nrow(lalonde)), ] # randomise order 

    X = cbind(lalonde$age, lalonde$educ, lalonde$black, lalonde$hisp, 
      lalonde$married, lalonde$nodegr, lalonde$u74, lalonde$u75, 
      lalonde$re75, lalonde$re74) 

    BalanceMat <- cbind(lalonde$age, lalonde$educ, lalonde$black, 
         lalonde$hisp, lalonde$married, lalonde$nodegr, 
         lalonde$u74, lalonde$u75, lalonde$re75, lalonde$re74, 
         I(lalonde$re74*lalonde$re75)) 

    genout <- GenMatch(Tr=lalonde$treat, X=X, BalanceMatrix=BalanceMat, estimand="ATE", M=1, 
        pop.size=16, max.generations=10, wait.generations=1) 

    P1[i] <- genout$Weight.matrix[1,1] 

} 

Автор статьи также предлагает additional information может помочь, но это не объясняет, что представляет weight matrix значения. КАК кто-либо их интерпретирует или понимает, почему изменяется их величина при изменении порядка данных.

ответ

3

К сожалению, это не вопрос, на который можно ответить очень легко (но чтобы ответить на часть вашего вопроса, нет, значения весовая матрица не связаны со стандартным отклонением).

GenMatch является аффинно инвариантна алгоритм сопоставления, который использует расстояние мера д(), в котором все элементы W равны нулю, за исключением вниз по главной диагонали. Основная диагональ состоит из k параметров, которые необходимо выбрать. (обратите внимание, что если каждый из этих параметров k установлен равным 1, d() - это то же самое, что и расстояние Махаланобиса). Как и расстояние Махаланобиса, эта метрика расстояния может использоваться для проведения жадного или оптимального полного соответствия. (Выбор установки недиагональных элементов W к нулю производится по причинам только вычислительной мощности)

Причины, по которой величины изменяются, когда порядок данных изменяются в том, что матрица весов Вт имеет бесконечность эквивалентных решений. Полученные совпадения инвариантны к изменению постоянной шкалы до меры расстояния. В частности, произведенные совпадения одинаковы для каждого W = cW для любого положительного скаляра c, и, таким образом, матрица может быть уникально идентифицирована многими способами.

Чтобы полностью понять, как вычисляются ненулевые элементы весовой матрицы, я рекомендую прочитать full article за формулировкой GenMatch, которая имеет несколько глубокий и комплексный взгляд на используемые методы.

Если вас интересует только исходный код, вы можете просмотреть его на GitHub. Если у вас есть дополнительные вопросы о конкретном коде R, я буду рад попытаться ответить на них, однако, если у вас появятся дополнительные вопросы об алгоритмах генерации весовой матрицы, вам, скорее всего, придется перейти на Cross Validated.

 Смежные вопросы

  • Нет связанных вопросов^_^