안녕하세요
저는 최근 R 공부를 시작하고 있습니다.
제가 가지고 있는 데이터로 PSM을 해보고 있는데
에러를 이해하지 못하겠어서 문의글을 작성하게 되었습니다.
PSM 이후 매칭된 환자의 수가 달라진 것이 에러인데요.
예를 들어, 제가 A 약물을 복용하는 환자군을 기준으로 매칭을 한다고 할때.
실제 데이터에서 A약물을 복용하는 환자는 139명이고, 복용하지 않는 환자는 10000명이라고 하고요.
이때, 1:1로 PSM을 한다고 하면 적어도 복용하는 환자는 139명, 복용하지 않는 환자는 130명 비슷하게 나와야하지 않나요?
근데 제가 시행했을 때는 (MATCHIT, nearest) (변수는 age, sex) (기준은 A약물복용력)
A 약물 복용하는 환자가 201명, 복용하지 않는 환자가 200여명정도가 나옵니다.
뭐가 잘못됐는지 아무리 찾아봐도 잘 모르겠어서요
이렇게 나오는 이유가 무엇인지,
어떻게 수정해야 제대로 나오는지 궁금합니다.
Comment 4
-
cardiomoon
2021.03.23 22:48
-
뽀오또
2021.03.24 18:55
네 제가 현재 가지고 있는 데이터를 몇개의 변수를 지우고 올려보겠습니다.
좀 변수가 많습니다.
저의 데이터는 C302라는 변수가 1인 환자를 기준으로(139명) matching 을 하고 싶습니다.
> match_C3 <- matchit(C302~ BX_AGE + A_SEX, method='nearest', data=C3_4, ratio=1)
> matched <- match.data(match_C3)
> dim(matched)
[1] 276 129
이렇게 나옵니다. 1:1 매칭인데 왜 2배 가까이 더 나오는지 모르겠습니다.
원래 데이터에서는 204:201 정도로 나왔었는데 139명보다 더 많이 나오는 이유도 모르겠습니다.....
뭐가 문제일까요...?
-
cardiomoon
2021.03.25 10:25
올려주신 데이터로 점검해보니 대조군과 치료군 모두 138명 씩 매칭됩니다. 위의 코드에서 summary(match_C3) 해보시면 양군간에 매칭된 수치를 확인하실 수 있습니다. 또한 dim(matched) 는 matched 데이터의 행갯수와 열갯수를 보여주는 명령어로 데이터가 모주 276행 및 129개의 열이라는 뜻입니다. table(matched$C302) 해보시면 대조군, 치료군 모두 138 명인 것을 알 수 있습니다.
-
뽀오또
2021.03.25 15:18
아.....넵~!!
제가 명령어 이해가 부족해서 벌어진 일이군요.
정말 감사합니다~!!!
안녕하세요? 사용하신 데이터와 R코드를 올려주시면 한번 검토해보겠습니다