2017-11-13 5 views
1

私は、ヨーロッパのサッカーの試合、そのフルタイムの結果と自宅の勝利のための暗黙の確率(麻薬のオッズを使用)を含むデータフレームを持っています。 は、以下のようになります。ヒストグラムで予測確率を評価するR

Div  Date HomeTeam  AwayTeam FTR PSH PSD PSA PSCH PSCD PSCA homeprob 
F2 28/07/17 Brest Chateauroux A 2.01 3.07 4.92 1.91 3.27 5.13  0.50 
F2 28/07/17 Nimes   Reims A 2.33 3.05 3.73 2.34 3.12 3.62  0.43 
... 

は、だから私は、y軸上のx軸と周波数上のインプライド確率でヒストグラムを作成しました。そして今、私は同じグラフ上の各homeprob値に対する実際の勝利数をプロットしたい(私は、予想される対の観測比較することができます) これは、これまで私が持っているグラフである

enter image description here

私はちょうどよ方法がわからないすべての可能な値homeprobにループを実行し、FTR == "H"の場合にカウントを追加することを考えていましたか?

btw - あなたが観察されたものと予想されるものを比較する良い方法があると思ったら教えてください。

ありがとうございます!

+0

'homeprob'変数を離散的な間隔でビンするのに' cut'を使うことを考えましたか?その後、dplyrコマンドを使用して家の勝ちを集計し、実際の勝利のための色などの3番目のエンコーディングを使用できます(棒グラフでなければなりません)。あなたのコメントのために – cbhyphen

+0

ありがとう!私はカットを使用し、今私は20のグループがあります。また、グループ値(たとえば(0.414 - 0.449))でデータフレームに列を追加しましたが、どのグループをどのようにループを構築して各グループのホームウインドウ数を数えるのかよくわかりません。forループを使用してみましたが成功しませんでした –

答えて

0

私は家の勝利の確率と "H"(私が推測しているのは、実際の勝利か予測された勝利か)を比較するためのいくつかの異なる選択肢があると思います。コメントに示唆されているように、homeprobをバケットに分割し、集計統計にdplyrを使用できます。その後、勝利のために色を使用するか、単純にプロットhomeprobと勝利をプロットします。

いくつかの方法がありますので、いくつかのオプションと再現可能な例を示します。ここで

はあなたに似ているいくつかの作られたデータである。

# random normal data 
randn_data <- rnorm(15000, 0.5, .05) 
df <- data.frame(homeprob = randn_data) 
# random uniform from 0 to 1 
df$randunif <- runif(nrow(df)) 
# new feature is "H" if random uniform is less than homeprob 
df$ftr <- ifelse(df$randunif < df$homeprob, "H", "A") 
df$probcut <- cut(df$homeprob, seq(0.2, 0.8, 0.05)) 

あなたのデータが正常であるので、私はそれが最良の選択肢だろうとは思わないが、今では、総勝利のために色を使用することができますし、周波数は平均値に対する高くなります。

library(dplyr) 
df_plot1 <- df %>% 
    group_by(probcut) %>% 
    summarise(hprob_counts = n(), wins = sum(ftr == "H")) 
# wins as color 
library(ggplot2) 
ggplot(df_plot1, aes(x = probcut, y = hprob_counts, fill = wins)) + 
    geom_col() + 
    scale_y_sqrt() 

enter image description here

私はそれを期待して観察を比較するために、勝率を使用する方がよいと思います。

df_plot2 <- df %>% 
    group_by(probcut) %>% 
    summarise(hprob_counts = n(), wins = sum(ftr == "H")) %>% 
    mutate(win_rate = wins/hprob_counts) 

ggplot(df_plot2, aes(x = probcut, y = hprob_counts, fill = win_rate)) + 
    geom_col() + 
    scale_y_sqrt() 

enter image description here

また、単に配布することなく、homeprobwin_rateをプロットできます。

ggplot(df_plot2, aes(x = probcut, y = win_rate)) + 
    geom_col() 

enter image description here

うまくいけば、これはあなたが探していた多かれ少なかれものです。

+0

どうもありがとうございました!私が探していたものですよ! –

+0

うれしいです! – cbhyphen

関連する問題