2017-11-03 8 views
1

환자의 생존 데이터가 있습니다. 그들 중 일부는 검열되었다. 내가 적합 할 모든 다른 기능 (예 는 지수, 이블 등)이 잘 작동 난다면 R.에서 flexsruv 패키지 경험적 데이터에 일반화 감마 함수를 적합 할 dist = "gengamma"에 대한 다음과 같은 오류 코드 :flexsurv에서 일반화 된 감마 기능으로 생존율을 예측하지 못합니다.

:
db.survival <- data.frame(time = c(101, 111, 185, 707, 85, 58, 427, 672, 90, 
           1452, 608, 99, 556, 62, 60, 1445, 563, 246, 
           163, 276, 216, 64, 61, 66, 67, 68, 81, 83, 
           99, 100, 100, 100, 100, 100, 100, 100, 100), 
         status = c(1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 
           1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 
           0, 0, 0, 0, 0, 0, 0, 0, 0)) 

내가에 대한 오류 코드가 나타날 : 여기

Error in optim(method = "BFGS", par = c(5.02274354115438, -0.0670900421918298, : 
    non-finite finite-difference value [2] 

내가 가진 그 데이터입니다

library(flexsurv) 
flexsurvreg(Surv(time, status) ~ 1, data = db.survival, dist="gengamma") 

그러나 "CG" 또는 "SANN"이라는 방법을 선택하면 결과가 표시되지만 결과는 달라집니다.

제 질문은 : 왜 처음에는 오류가 발생합니까? 내가 잘못 코딩합니까?

도움을 주셔서 감사드립니다.

답변

1

코드에 문제가 있다고 생각하지 않습니다. 오류는 flexsurvreg에서 사용하는 optim에서 발생합니다. "BFGS", "CG" "L-BFGS-B" 및 방법에 대한 기울기를 반환 help("optim")

gr 함수에 명시된 바와 같이 기본적으로는 그래디언트 optim 대한 유한 차분 근사를 사용한다. NULL 인 경우, 유한 차이 근사치 이 사용됩니다. "SANN" 메서드의 경우 에 새 후보 지점을 생성하는 함수를 지정합니다. NULL이면 기본 가우시 마르코프 커널이 사용됩니다.

코드 당신이 optim 몇 반복에 대한 실행 않지만보다 몇 가지 C 코드에서 실패하는 것을 볼 수있는 후 다음 통화

> options(error = recover) 
> flexsurvreg(Surv(time, status) ~ 1, data = db.survival, dist="gengamma", control = list(trace = 100)) 
initial value 144.298116 
iter 10 value 131.067771 
iter 20 value 128.013812 
iter 30 value 127.761461 
iter 40 value 127.753269 
Error in optim(control = list(trace = 100), method = "BFGS", par = c(5.02274354115438, : 
    non-finite finite-difference value [2] 

Enter a frame number, or 0 to exit 

1: flexsurvreg(Surv(time, status) ~ 1, data = db.survival, dist = "gengamma", control = list(trace = 100)) 
2: do.call("optim", optim.args) 
3: optim(control = list(trace = 100), method = "BFGS", par = c(5.02274354115438, -0.0670900421918298, 0), fn = function (optpars, . 

Selection: 3 

실패 어디에 당신은 볼 수 있습니다. 더구나 flexsurv"L-BFGS-B"과 함께 사용할 수있는 optimlower 또는 upper 개의 인수를 제공하지 않음을 알 수 있습니다. this vignette에서 매개 변수 중 하나가 제한적으로 지원되므로 도움이 될 수 있습니다.