2017-04-21 6 views
0

나는 R을 며칠 동안 가르치고있다. 그리고 나는 cox 회귀 분석에 붙어있다.카테고리를 새 변수로 사용 하시겠습니까?

저는 연속 변수를 각각 cut() 함수를 사용하여 2 개의 범주 형 그룹으로 나눌 수있었습니다. 이제 cox 회귀 분석에서 이러한 카테고리를 별도로 결합 할 수 있는지 궁금합니다.

예를 들어, 각각 A-, A + & B-, B + & C-, C +의 두 가지 범주로 구성된 3 개의 변수 (A, B, C)가 있습니다. 이제 변수를 명명하여 coxph()을 실행하면 "+"범주에 대한 결과 만 얻습니다 ("-"범주가 참조 그룹으로 사용되기 때문에 이해할 수 있습니다). 그러나 C-는 생존에 부정적인 영향을 미치기 때문에 그 카테고리에 대한 결과를 얻는 데 더 관심이 있습니다.

또한 각 카테고리를 새 그룹/변수로 정의하고 개별적으로 결합하여 생존에 미치는 영향을 볼 수있는 방법이 있는지 궁금합니다. 아니면 이것은 불필요한가요?

편집 : 내가 더 구체적인 예를 들어, 나는 그것과 같이 보일 것입니다

#example data: 
test<-structure(list(A = c(8, 6, 42, 97, 55, 1, 5, 7, 55, 4), B = c(93, 9, 65, 2, 51, 89, 1, 1, 5, 62), C = c(58, 99, 100, 98, 92, 100, 99, 95, 81, 67), time = c(1.6, 34.6, 1.5, 35.8, 7.7, 38.6, 40.2, 4.7, 37.6, 8.6), event= c(1, 0, 0, 0, 1, 0, 0, 1, 0, 1))) 
mydata<-as.data.frame(test) 

: 그것이 작동하는 희망을 포기하려고합니다 :

mydata 
    A B C time status 
1 8 93 58 1.6  1 
2 6 9 99 34.6  0 
3 42 65 100 1.5  0 
4 97 2 98 35.8  0 
5 55 51 92 7.7  1 
6 1 89 100 38.6  0 
7 5 1 99 40.2  0 
8 7 1 95 4.7  1 
9 55 5 81 37.6  0 
10 4 62 67 8.6  1 

을 그리고 위의 질문에 관한 정보를, 이것이다

#load survival package 
library("survival") 

#define variables 
A <- c(mydata[1:10,1]) 
B <- c(mydata[1:10,2]) 
C <- c(mydata[1:10,3]) 
OS <- c(mydata[1:10,4]) 
Event <- c(mydata[1:10,5]) 

# dependent and independent variables 
y <- Surv(OS, Event) 
x <- cbind(A, B, C) 
mydata <- data.frame(cbind(x,y)) 

#Cox proportional hazard model, with the "raw data" 
coxph1 <- coxph(y~x,data=mydata, method="breslow") 
summary(coxph1) 

#categorising the variables 

CA=cut(mydata$A, br=c(-1,20,101), labels = c("[A-]", "[A+]")) 
CB=cut(mydata$B, br=c(-1,20,101), labels = c("[B-]", "[B+]")) 
CC=cut(mydata$C, br=c(-1,96,101), labels = c("[C-]", "[C+]")) 

#Cox regression, combined with cut intervals 
coxph2=coxph(y~CA+CB+CC, data=mydata, method="breslow") 
summary(coxph2) 

그리고 예상되는 출력은 다음과 같습니다 : 내가 지금까지했던

coxph(formula = y ~ x, data = mydata, method = "breslow") 

    n= 10, number of events= 4 

     coef exp(coef) se(coef)  z Pr(>|z|) 
xA 0.0001443 1.0001443 0.0238329 0.006 0.995 
xB 0.0104826 1.0105378 0.0211830 0.495 0.621 
xC -0.0497490 0.9514682 0.0383305 -1.298 0.194 

    exp(coef) exp(-coef) lower .95 upper .95 
xA 1.0001  0.9999 0.9545  1.048 
xB 1.0105  0.9896 0.9694  1.053 
xC 0.9515  1.0510 0.8826  1.026 

Concordance= 0.769 (se = 0.167) 
Rsquare= 0.29 (max possible= 0.799) 
Likelihood ratio test= 3.43 on 3 df, p=0.33 
Wald test   = 3.3 on 3 df, p=0.3476 
Score (logrank) test = 4.24 on 3 df, p=0.2364 


coxph(formula = y ~ CA + CB + CC, data = mydata, method = "breslow") 

    n= 10, number of events= 4 

      coef exp(coef) se(coef)  z Pr(>|z|) 
CA[A+] -1.036e+00 3.549e-01 1.262e+00 -0.821 0.412 
CB[B+] 4.294e-01 1.536e+00 1.274e+00 0.337 0.736 
CC[C+] -2.162e+01 4.095e-10 2.094e+04 -0.001 0.999 

     exp(coef) exp(-coef) lower .95 upper .95 
CA[A+] 3.549e-01 2.818e+00 0.0299  4.213 
CB[B+] 1.536e+00 6.509e-01 0.1266 18.653 
CC[C+] 4.095e-10 2.442e+09 0.0000  Inf 

Concordance= 0.904 (se = 0.165) 
Rsquare= 0.542 (max possible= 0.799) 
Likelihood ratio test= 7.8 on 3 df, p=0.05031 
Wald test   = 1.15 on 3 df, p=0.7653 
Score (logrank) test = 6.42 on 3 df, p=0.09288 
+3

에 오신 것을 환영합니다 : 는 요소의 참조 카테고리가 relevel 기능을 사용하여 변경합니다. [좋은 질문을하는 방법] (http://stackoverflow.com/help/how-to-ask), [재현 가능한 예제를 제공하는 방법] (http://stackoverflow.com/questions/)에서 읽으십시오. 5963269/how-to-make-a-great-r-reproducible-example) 또한 예상 출력을 게시합니다. – Sotos

+0

예를 들어 편집했습니다. 당신은 어떻게 내가 분리 된 그룹을 사용할 수 있는지 생각할 수 있니? 아니면 그냥 바보 같은 질문일까요? – Alex

+0

"틀렸어"보입니다. 할까요. 하나의 요소 변수가 될 수 있습니다. –

답변

0

먼저 불필요하게 복잡한 코드가 여러 번 있습니다. 테스트 데이터를 기록 할 수 있습니다

mydata <- data.frame(A = c(8, 6, 42, 97, 55, 1, 5, 7, 55, 4), 
        B = c(93, 9, 65, 2, 51, 89, 1, 1, 5, 62), 
        C = c(58, 99, 100, 98, 92, 100, 99, 95, 81, 67), 
        time = c(1.6, 34.6, 1.5, 35.8, 7.7, 38.6, 40.2, 4.7, 37.6, 8.6), 
        event= c(1, 0, 0, 0, 1, 0, 0, 1, 0, 1)) 

대신 OS <- c(mydata[1:10,4]) 당신은 OS <- mydata$time을 쓸 수 있지만 우리 mydata의 취할 필요가 없습니다. 당신이 볼 수 있듯이,이 모델은 귀하의 질문에 첫 번째와 같습니다

> (coxph1 <- coxph(Surv(time, event) ~ ., data=mydata, method="breslow")) 
Call: 
coxph(formula = Surv(time, event) ~ ., data = mydata, method = "breslow") 

     coef exp(coef) se(coef)  z p 
A 0.000144 1.000144 0.023833 0.01 1.00 
B 0.010483 1.010538 0.021183 0.49 0.62 
C -0.049749 0.951468 0.038331 -1.30 0.19 

Likelihood ratio test=3.43 on 3 df, p=0.33 
n= 10, number of events= 4 

개별적으로 공변량을 결합의 질문에 대해서 - 다른 모든 공변량을 사용하여 ~. 수단을. ~ A + B + C 또는 다른 조합으로 구체적으로 지정할 수 있습니다.

참조 카테고리 변경과 관련하여 -> 2 카테고리에서만 필요합니다. 계수의 의미는 범주와 참조 범주 간의 차이입니다. 카테고리가 2 개만있는 경우 참조를 변경하면 같은 계수가 제공되고 비트는 '-'부호가 붙습니다. 이 도움이

mydata$CA <- cut(mydata$A, br=c(-1,20,101), labels = c("[A-]", "[A+]")) 
mydata$CB <- cut(mydata$B, br=c(-1,20,101), labels = c("[B-]", "[B+]")) 
mydata$CC <- cut(mydata$C, br=c(-1,96,101), labels = c("[C-]", "[C+]")) 

mydata$CA <- relevel(mydata$CA, 2) 
> (coxph1 <- coxph(Surv(time, event) ~ CA, data=mydata, method="breslow")) 
Call: 
coxph(formula = Surv(time, event) ~ CA, data = mydata, method = "breslow") 

     coef exp(coef) se(coef) z p 
CA[A-] 0.559  1.749 1.158 0.48 0.63 

희망 : SO

+0

정말 고마워요! :) – Alex