2

私の問題は、分布を当てはめたいデータのセットがあり、分布が見つかったら、モンテカルロシミュレーションを実行して、見つかった分布を伝播することです。

私の最初のコードは次のとおりです。

require(fitdistrplus)
example1<-c(29,23,29,25,26,29,29,27,25,25,25,26,28,25,29,28,28,26,28,25,29,26,30) 
f1<-fitdist(example1,rgamma,method="mle")

次にコマンドを使用すると

print(f1)

形状は 204.00 で、ガンマ分布のレートは 7.568 であることがわかります

(私が分布をフィッティングしている数値は現時点では任意であることに注意してください。通常、分布をフィッティングするために何百もの観測があります)。

今助けが必要なのは、パッケージのコードを使用してmc2dこのディストリビューションを次のように伝播するときです。

require(mc2d)
ndunc(1000)
fitted<-mcstoc(rgamma, type="U", shape=204.00, rate=7.569)

現在、「fitdist」コマンドの前の「印刷」から、この上記の関数にシェイプとレートを手動で入力する必要があります。

私の質問は、手動でコードを中断する必要がないように、mcstoc コマンドが fitdist コマンドから形状と速度を自動的に取得する方法はありますか? または、fitdistrplus パッケージと mc2d パッケージでそれができない場合、これを実行できる別のパッケージはありますか?

よろしくお願いします!

4

3 に答える 3

4
f1$estimate[1]
#   shape 
#204.0008 

f1$estimate[2]
#    rate 
#7.567762

fitted<-mcstoc(rgamma, type="U", shape=f1$estimate[1], rate=f1$estimate[2])
于 2012-07-23T12:43:58.933 に答える
2
myFunction <- function (data){
    f1<-fitdist(data,rgamma,method="mle")
    fitted<-mcstoc(rgamma, type="U", shape=f1$estimate[1], rate=f1$estimate[2])
    return(fitted)
}

example1<-c(29,23,29,25,26,29,29,27,25,25,25,26,28,25,29,28,28,26,28,25,29,26,30)

fitted.example1 <- myFunction(exemple1)

この機能はテストされていません。

于 2012-07-23T12:53:44.077 に答える
1

パラメータの名前を入力したくない場合は、次を使用できますdo.call

fitted <- do.call( 
  function(...) mcstoc(rgamma, type="U", ...), 
  as.list(f1$estimate) 
)
于 2012-07-23T14:20:20.373 に答える