2016-07-19 1 views
1

nls()을 사용하여 매개 변수를 추정 할 때 몇 가지 문제가 있습니다.nls를 사용하여 데이터에 피팅 오류 기능

y <- sort(runif(100, 0, 10^8)) 

내가 사용하는 경우 nls() :

funk1 <- function(a,x) { x^2*exp(-(l*(1-exp(-r*a))/r)) } 

funk2 <- function(x) { sapply(x, function (s) 
{ integrate(funk1, lower = 0, upper = s, x=s)$value }) } 

내가 funk2y에 맞게 시도하고있다 : I는이 손에 일부 데이터를 설명하는 기능의 설정 다음 한

nls(y ~ funk2(z1$days.post.bmt), data= z1, start=list(l=0.02, r=0.002), trace=T) 

그것을 다음 오류를 보여줍니다.

Error in f(x, ...) : object 'l' not found

SSR을 최소화하여 기능에 맞게 및 매개 변수 추정을주는 매개 변수 공간에서 매개 변수 lr에 대해 다른 값을 대체 할 수 nls()의 요점 아닌가? 작동하려면 왜 l의 가치가 필요합니까? 나는 확실히 큰 것을 여기에서 놓치고있다. 도와주세요!

미리 감사드립니다.

답변

1

매개 변수 lrfunk1funk2의 함수 인수로 전달해야합니다.

funk1 <- function(a,x,l,r) { 
    x^2*exp(-(l*(1-exp(-r*a))/r)) 
    } 

funk2 <- function(x,l,r) { 
    sapply(x, function (s) { 
       integrate(funk1, lower = 0, upper = s, x=s, l=l, r=r)$value 
       }) 
    } 

나는 시험에 일부 데이터를 생성합니다 : 카운터 예를 들어

z <- data.frame(days.post.bmt = 1:100, 
       y = funk2(1:100, l = 1, r = 1) + rpois(100, 1:100)) 

nls(y ~ funk2(days.post.bmt,l,r), data = z, start = list(l = 0.5, r = 0.5)) 

#Nonlinear regression model 
# model: y ~ funk2(days.post.bmt, l, r) 
# data: z 
#  l  r 
#0.9405 0.9400 
# residual sum-of-squares: 6709 

#Number of iterations to convergence: 5 
#Achieved convergence tolerance: 2.354e-07 

이 고려 : 도움을

bad_funk1 <- function(a,x) { 
    x^2*exp(-(l*(1-exp(-r*a))/r)) 
    } 

bad_funk2 <- function(x) { 
    sapply(x, function (s) { 
       integrate(funk1, lower = 0, upper = s, x=s)$value 
       }) 
    } 

nls(y ~ bad_funk2(days.post.bmt), data = z, start = list(l = 0.5, r = 0.5)) 
# Error in f(x, ...) (from #2) : argument "l" is missing, with no default 
+0

안녕하세요, 감사합니다! 당신은 내 r 관련 문제의 대부분에 거의 대답했다. 호기심에서 너는 무엇을 해야할지 알 수 있을까? – VitalSigns

+0

아, 흥분 되는군. 나는 천천히 통계의 세계에 빠져들고있다. 나는 꽤 혼란 스럽다. 최근에 세상에서 가장 지루한 과제를 겪은 사람으로부터 논문 작성을 위해 행운을 빌어주세요. :) – VitalSigns

+0

안녕하세요 저는 질문으로 게시 한 다른 질문을했습니다. 그것은 MLE와 관련이 있으며 매개 변수를 추출하기 위해 최적화를 사용합니다. 만약 당신이 시간이 있고이 문제를 볼 정도로 흥분된다면 여기를 찾으십시오 - http://stackoverflow.com/q/38486139/6533048 희망, 나는 부과하지 않습니다. – VitalSigns