1

一連のイベント (約 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 を合計する方法がわかりません。まして、合計に対するパーセンタイル (変位関数を使用) を見つけることはできません。それをどのように進めますか?

データ構造に関しては、いくつかのアイデアがありますが、よくわかりません..

  1. たぶん、予測を転置してから、MC シナリオを 1 つずつ反復してデータを合計する必要がありますか?

  2. たぶん、存在しない (Exists == 0) 結果からイベントを除外する必要があります。しかし、どのように、どこでそれを行うべきですか?

結果が次のようになると、おそらくもっと理にかなっています(ただし、これを達成する方法もわかりません)。

Scenario     Name     Yield
1            Event1   350
1            Event2   200
2            Event1   350
...

あなたの考えを共有してください!

ありがとうございました!

4

1 に答える 1