私はこれから条件付き確率の行列を作成しようとしています:
ループなしでコードを書き直しました
a # Signal Vector
b # Price Change Vector
Signalt<- seq(0, 1, 0.05) # Produce the 5% tiles
abst <- c(seq(1, 1.02, by = 0.0025), 2) #Produce the 0% to 2% tiles with 0.25% increments. Added 1 to include price change of 0 in `temp`
xbool = ((Signal >= Signalt[1] & a < Signalt[1 + 1]) *1) # 1 for True 0 for False
temp = (PercChange + 1) * xbool
temp2 <- temp[which(temp > 0)]
CondProb <- cut(temp2, abst, include.lowest = T)
table(CondProb)
これにより、発生数を含むabst列を含むテーブルが出力されます。もちろん、行ごとの合計の%である必要がありますが、最初にループを実行してマトリックス出力を取得できるようにしたいと思います。
ループオリジナル-コーディング設定のほとんどを変更したので、ほとんど無視する必要があります
Signal <- runif(100)
PercChange <- abs((rnorm(100)/100))
signalt <- seq(0, 1, 0.05)
abst <- seq(0, c(0.02:1), 0.0025)
CondDistMat <- matrix(0, nrow = length(signalt), ncol = length(abst))
for(j in 1:length(signalt - 1)){
xbool = (is.na((Signal >= signalt[j] & Signal < signalt[j + 1]) ) * 1)
ysubset = (PercChange * xbool[j] )
CondProb = hist(ysubset, breaks = abst, freq = TRUE)
CondDistMat[signalt, abst] <- CondProb$density
}
列はによって定義されたパーセンタイルになりabst
、行はによって定義された5%のタイルになりますsignalt
。アイデアは、ブールベクトルを使用して、絶対リターンPercChange
が列にあるはずの1を生成し、それぞれsignalt
の確率をプロットすることです。
しかし、私は出力を生成することができません-誰かがエラーを見つけることができますか?前もって感謝します
目的の出力は、添付の画像のようになります。