さまざまなグループのイノベーションの普及を分析するために、ベースカーブを推定しようとしています。今までnlsLM()
は、minpack.lm
パッケージを使用して曲線のパラメーターを推定したり、曲線に合わせたりしていました。さまざまな開始値をループして、さまざまな開始値に対してこのコマンドを使用して最適なものを推定します。
Bass.nls <- nlsLM(cumulative_y~ M * (((P + Q)^2/P) * exp(-(P + Q) * time))/(1 + (Q/P) * exp(-(P + Q) * time))^2
, start = list(M=m_start, P= p_start, Q=q_start)
, trace = F
, control = list(maxiter = 100, warnOnly = T) )
一部のグループにはデータポイントがほとんどないため、多くは収束しません。
Venkatesan and Kumar(2002)は、データが不足している場合、低音モデルの推定に遺伝的アルゴリズムアプローチを使用することを提案しています(Venkatesan et al 2004も参照)。私はRでGAを実装するいくつかのパッケージを発見した(のようなGA
、genalg
、gafit
)。しかし、私はこの分野に慣れていないので、どのパッケージを使用するのか、パッケージでベース式をどのように使用するのかわかりません。
以下のコードがお役に立てば幸いです。遺伝的アルゴリズムを利用するために「GA」パッケージを使用しました。
x <- c(840,1470,2110,4000,7590,10950,10530,9470,
7790,5890)
t<- 1:length(x)
Horiz <- length(x)
fit <- function(p,q,m) {
res = x - (m*((exp((p+q)*t)*p*(p+q)^2) / (p*exp((p+q)*t)+q)^2))
-(sum(res**2)/Horiz)
}
GA <- ga(type = "real-valued",
fitness = function(x) fit(x[1],x[2],x[3]),
lower = c(0,0,0), upper = c(1,1,sum(x)*2),
popSize = 1000, maxiter = 1000 ,run = 500)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加