一連のイベント (約 40 項目) を含む CSV ファイルがあります。これらはすべて、特定の確率に応じて発生するかどうかのいずれかです。列: イベント名、収益サイズ、確率。
このデータで私が興味を持っているのは、セットの合計収量 (セットのすべての収量の合計) であり、おそらくイベントごとの収量の合計です。したがって、イベントは発生しない可能性があり、セットの合計収量サイズが異なる可能性があるため、確率列でベルヌーイ試行を行い、セットに対してモンテカルロ シミュレーションを行う必要があります。
最後に、すべてのモンテカルロ シミュレーション反復 (シナリオ) で、セット全体または特定のイベントの Yield の合計に対するパーセンタイルを計算する必要があります。
私はそれを書き留めるのに苦労しています..(私はまだRを学んでいます、私はJava/C#などに慣れています)
私が現在作ったコード:
#Generate sample data for a set of events that I want to simulate
eventcol <- c('Event1', 'Event2', 'Event3', 'Event4', 'Event5')
yieldcol <- c(350, 200, 100, 120, 540)
problcol <- c(0.5, 0.2, 0.9, 0.4, 0.7)
events <- data.frame(Name=eventcol, Yield=yieldcol, Probability=problcol)
#Forecast function
forecast <- function(events){
count <- nrow(events)
data <- data.frame(Id=seq(1, count))
data$Name <- events$Name
data$Yield <- events$Yield
data$Exists <- rbinom(count,1,events$Probability)
return(data)
}
#Create Monte Carlo simulation scenarios/realizations
scenarios <- replicate(4, forecast(events))
scenarios
出力は次のとおりです。
> scenarios
[,1] [,2] [,3] [,4]
Id Integer,5 Integer,5 Integer,5 Integer,5
Name factor,5 factor,5 factor,5 factor,5
Yield Numeric,5 Numeric,5 Numeric,5 Numeric,5
Exists Numeric,5 Numeric,5 Numeric,5 Numeric,5
しかし、シナリオごとに存在する (Exists == 1) イベントの Yield を合計する方法がわかりません。まして、合計に対するパーセンタイル (変位関数を使用) を見つけることはできません。それをどのように進めますか?
データ構造に関しては、いくつかのアイデアがありますが、よくわかりません..
たぶん、予測を転置してから、MC シナリオを 1 つずつ反復してデータを合計する必要がありますか?
たぶん、存在しない (Exists == 0) 結果からイベントを除外する必要があります。しかし、どのように、どこでそれを行うべきですか?
結果が次のようになると、おそらくもっと理にかなっています(ただし、これを達成する方法もわかりません)。
Scenario Name Yield
1 Event1 350
1 Event2 200
2 Event1 350
...
あなたの考えを共有してください!
ありがとうございました!