私は非線形モデルに適合しようとしていますが、良い例はありません online。関数y = at^b * exp(-ct)に名前がありますか?線形化できますか? a、b、cをどのように見積もることができますか?
この関数には名前がありますか?
線形化できますか?
Iは、以下の時間t
の関数としての(グループのように)ランダム効果g
とパラメータa
、b
、及びc
を推定することを試みてきました。私はランダムな効果なしでnls
を使ってモデルを適合させることができますが、モデルを収束させることに問題があります。提案は歓迎されます(R内にあることが望ましいが、適切なパッケージがあればよい)?
## time, repeated 16 times for 4 replicates from each of 4 groups
t <- rep(1:20, 16)
## g, group
g <- rep(1:4, each = 80)
## starting to create an example dataset,
## to see if I can recover known parameters
a <- rep(c(3.5, 4, 4.1, 5), each = 80)
b <- rep(c(1.1, 1.4, 1.8, 2.5), each = 80)
c <- rep(c(0.125, 0.25), each = 160)
## error to add to above parameters
set.seed(1)
e_a <- runif(320, -0.5, 0.5)
e_b <- runif(320, -0.1, -0.1)
e_c <- runif(320, -0.02, 0.02)
## this is my function
f <- function(t, a, b, c) a * (t^b) * exp(-c * t)
## simulate y
y <- f(t = t, a + e_a, b + e_b, c + e_c)
mydata <- data.frame(t = t, y = y, g = g)
library(nlme)
## now fit the model to estimate a, b, c
fm1 <- nlme(y ~ a * (t^b) * exp(-c * t),
data = mydata,
fixed = a + b + c~1,
random = a + b + c ~ 1|g,
start = c(a = 4, b = 1, c = 0.25),
method = "REML")
非線形最小二乗は、この問題の一般的なアプローチであり、このフォーラムで広く扱われています。アーカイブを参照してください。 – Sycorax
@ user777 nlsはうまくカバーされているようですが、無作為の影響はあまりありません。例を教えてください。 – Abe
再現性のために 'ricker()'関数がどこから来たのか教えてください...これはStackOverflowの質問です(あなたが適合したいモデルを知っていれば、それに合わせて計算上の困難があります) –