2015-06-22 21 views
5

Tham chiếu đến gói Matching là gì, chúng tôi xem ví dụ bằng cách sử dụng GenMatch.Ma trận Trọng lượng được tạo ra trong Gói phù hợp

Chúng ta đọc thấy rằng Weight Matrix mà được tạo ra là một ma trận mà tương ứng chéo với trọng lượng cho mỗi biến trong X

Nhưng chúng tôi không chắc chắn về giá trị được tạo ra đại diện - là họ liên quan đến một tiêu chuẩn độ lệch.

Hãy lấy ví dụ được cung cấp trong 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) 

Sau đó, chúng ta có thể sản lượng Weight.matrix sẽ được sử dụng sau này để ghép các dữ liệu

genout$Weight.matrix 

và đặc biệt là giá trị được gán cho age

genout$Weight.matrix[1,1] 

Chúng tôi nhận được một giá trị ~ 205. Nhưng trọng lượng này có ý nghĩa gì hoặc đại diện cho ??

Hơn nữa, nếu chúng tôi sắp xếp ngẫu nhiên thứ tự của dữ liệu, giá trị sẽ thay đổi liên tục.

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] 

} 

Tác giả của bài báo cũng gợi ý các additional information có thể hỗ trợ, nhưng nó không giải thích gì weight matrix giá trị đại diện. Bất cứ ai giải thích chúng hoặc hiểu lý do tại sao độ lớn của chúng thay đổi khi thứ tự của dữ liệu được thay đổi

Trả lời

3

Thật không may là câu hỏi này có thể được trả lời rất dễ dàng (nhưng để trả lời một phần câu hỏi của bạn) ma trận trọng lượng không liên quan đến độ lệch chuẩn).

GenMatch là một thuật toán phù hợp affinely bất biến có sử dụng khoảng cách đo d(), trong đó tất cả các yếu tố của W là zero trừ xuống đường chéo chính. Đường chéo chính bao gồm các thông số k phải được chọn. (lưu ý rằng nếu mỗi tham số k này được đặt bằng 1, d() giống với khoảng cách Mahalanobis). Giống như khoảng cách Mahalanobis, chỉ số khoảng cách này có thể được sử dụng để tiến hành khớp đầy đủ hoặc tối ưu. (Sự lựa chọn của thiết lập các yếu tố đường chéo của W để không được làm vì lý do sức mạnh tính toán một mình)

Lý do mà độ lớn thay đổi khi thứ tự của các dữ liệu là khác nhau là ma trận cân W có vô số các giải pháp tương đương. Các trận đấu được tạo ra là bất biến với sự thay đổi quy mô không đổi đối với thước đo khoảng cách. Đặc biệt, các kết quả trùng khớp được tạo ra giống nhau cho mỗi W = cW đối với bất kỳ vô hướng tích cực nào c, và do đó ma trận có thể là được xác định duy nhất theo nhiều cách.

Để hiểu đầy đủ về cách tính các phần tử khác 0 của ma trận trọng số, tôi khuyên bạn nên đọc full article phía sau công thức GenMatch, cái nhìn hơi sâu và phức tạp về các phương pháp được sử dụng.

Nếu bạn chỉ quan tâm đến mã nguồn, bạn có thể xem nó trên GitHub. Nếu bạn có thêm câu hỏi về mã R cụ thể, tôi sẽ rất vui khi trả lời chúng, tuy nhiên nếu bạn có thêm câu hỏi về các thuật toán đằng sau việc tạo ma trận trọng lượng, bạn có thể cần phải qua Cross Validated.