2016-07-19 8 views
1

nls()を使用してパラメータを推定する際に問題があります。私が手にいくつかのデータを説明するための関数の次のセットを持っている: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に合うようにしようとしています:私はnls()を使用する場合

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

を:

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

funk1funk2の関数引数として、パラメータlrを渡す必要があります。

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

こんにちは、助けに感謝を!あなたは私の関連する問題のほとんどにほとんど答えました。好奇心から、あなたは何をしているのか分かりますか? – VitalSigns

+0

ああ、それはエキサイティングです!私は今統計の世界にゆっくりと向かいつつあり、かなり混乱しています。最近、世界で最も退屈な仕事をしてきた人から来て、あなたに論文執筆の運を願ってください! :) – VitalSigns

+0

私は質問として投稿した別のクエリを持っていました。これは、MLEおよび最適化パラメータを最適化することに関連しています。あなたが時間を持っていて、問題を見るのに十分興奮しているなら、ここでそれを見つけてください - http://stackoverflow.com/q/38486139/6533048希望、私は当惑していません。 – VitalSigns

関連する問題