2013-07-22 6 views
0

현재 답하고 끝이 약간 열려 내 원래의 게시물이, 나는이 함께 작동하는 방법을 알아 내기 위해 노력 해왔다 일부 샘플 데이터를 관련합니다 hereRPY2 - 기능 콜링 - 콕스 비례 위험이

찾을 수 있습니다 , 내가 어디서 얻었고 현재 나의 현안은 무엇인지.

그래서, 내 데이터, 또는 내 데이터의 오히려 간단한 예제는 다음과 같습니다

zipcode xcoord  ycoord age_age6574 age_age75plus sex_female stage_late death_death access TruncTime 
51062 211253.4259 4733174.483  0   1    0    0   1   40  121 
51011 212255.621 4757938.874  0   1    0    0   0   43  121 
51109 215303.4471 4721047.303  0   1    1    1   0   21  121 

이 데이터는 실제 범주 - age_age6574하고 대신에 더미/이진 변수가 존재하도록 사전 처리 된 age_age75plus은 하나의 카테고리, sex_female 다른 하나, stage_late 다른 하나, death_death 다른 카테고리를 구성합니다. Access은 연속 변수입니다. TruncTime은 이산 시간 변수로 처리됩니다. 검열 변수로 사용될 변수는 death_death입니다.

기능을 호출 :

을 그래서, 다음 내가하는 모든 일을 가져올 수 :

from rpy2 import robjects 
from rpy2.robjects.packages import importr 
from rpy2.robjects.vectors import DataFrame 
survival = importr('survival') 
coxph = survival.coxph 
Surv = survival.Surv 
theData = DataFrame.from_csvfile(newDataFile, header=True, sep=',') 

그래서 모든 콕스 비례 위험을 할 수있는 모든 설정입니다 - 내 생각이!

coxph(formula = Surv(TruncTime, death_death) ~ age_age6574 + 
age_age75plus + sex_female + stage_late + access, method = "breslow") 

를 모든 것이 잘 밖으로 작동 : R 내

나는 할 수있다.

내가 기술 한 모든 것을 사용하여, 파이썬에서이 같은 일을 할 때, 나는라는 오류 얻을 :

coxph(Surv('TruncTime', 'death_death'), 'age_age6574'+'age_age75plus'+'sex_female'+'stage_late'+'access', data = theData, method = 'breslow') 

이것은 오류가 반환 :

이이 함수 호출을

Error in (function (time, time2, event, type = c("right", "left", "interval", : 
    Time variable is not numeric 

그래서, 내가 무엇을 잘못하고있는 함수 호출 (왜이 오류를 반환합니다) 그리고 내가 제대로 호출에 대해 갈까? 또한 censoring을 '0'에서 '1'(검열 변수가 작동하는 방식을 반대로)으로 변경하는 방법이 있는지 궁금 할 것입니다.

:::: UPDATE ::::

그래서 나는 열/사용 속성을 내 문제의 일부를 지정했다 발견. 분명히 rpy2는 함수를 호출하기 위해 열의 숫자 인덱스가 필요합니다. 그래서 :

Surv(theData[9], theData[7]) 

coxph의 생존 부분에 대해. Surv 부분이 작동합니다.

이제 다른 모든 것을 지정하는 방법을 알아 내려고 노력 중입니다. 즉 :

- 모델을 만들 때 사용할 다른 변수를 어떻게 지정합니까? 이러한 변수를 함께 연결하는 데 +을 사용하는 데 문제가 있습니다. 또한 ~은 일반 R 에서처럼 작동하지 않습니다.

coxph(Surv(theData[9], theData[7]), theData[3]+theData[4]+theData[5]+theData[6]+theData[8], data = theData, method = 'breslow') 

- 그것은 확실히 그 +에 문제가되고 아니에요 다음과 같은 '

coxph(Surv(theData[9], theData[7])~theData[3]+theData[4]+theData[5]+theData[6]+theData[8], data = theData, method = 'breslow') 

나는 또한'와 '~'교체 시도 작동하지 않습니다 다음 ~,으로 대체하는 것이 실제로 효과가 있습니다.

+0

두 항목을 모두 한 항목으로 통합하는 것이 좋습니다 (그렇지 않으면 독자는 어떤 방식 으로든 이동 경로를 따라야합니다). – lgautier

+0

'coxph()'를 호출하는 정확한 파이썬 코드가 없다면, 무슨 일이 일어나고 있는지 짐작하기가 어려울 것입니다 .... – lgautier

+0

@Igautier는 답장을 보내 주셔서 대단히 감사합니다! 통합하는 최선의 방법을 말씀해 주시겠습니까? 아무도 내 이전 게시물에 대한 의견조차 귀찮게하지 않았다. 그래서 나는 그렇게 생각하지 않았다. 내가 게시 한 오류 바로 위에, 게시물 끝에, 내가 사용하고있는 코드입니다. 나는 업데이트를 게시하고 편집하여 더 널리 퍼지도록 할 것입니다. 제발 좀 봐, 당신은 어떤 아이디어가 있다면, 분명히 알려주세요! 다시 한 번, 읽고 읽고 의견을 말할 시간을내어 주셔서 감사합니다! – DMML

답변

1

Formula을 사용하는 것이 좋습니다.

이 방법이 유용할까요?

from rpy2.robjects import Formula 
coxph(Formula("Surv(TruncTime, death_death) ~ " \ 
       "age_age6574 + age_age75plus + sex_female + stage_late + access"), 
     data = theData, method = 'breslow') 
+0

답장을 보내 주신 @Igautier에게 다시 한 번 감사드립니다! 나는 그것을 수표로 줄 것이고, 당신에게 순간적으로 돌아갈 것이다! – DMML

+0

@Igautier'SyntaxError : 줄 연속 문자 뒤의 예상치 못한 문자'오류가 발생합니다. 어떤 아이디어? – DMML

+0

닫는 괄호가 없습니다 (수정 됨). – lgautier