2017-11-13 3 views
1

나는 유럽 축구 경기가 포함 된 데이터 프레임을 보유하고 있으며, 풀 타임 결과와 득점 가능성에 대한 묵시적 확률을 사용합니다 (bookies 확률 사용). 은 다음과 같다 : 히스토그램을 사용하여 예상 확률을 계산 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 
... 

그래서 I는 y 축에 X 축 및 주파수의 묵시적 확률 히스토그램을 생성. 그리고 지금은 내가 지금까지

enter image description here

난 그냥 해요이이 그래프이다 같은 그래프 (내가 예상 대 관찰 비교할 수 있습니다) 각 homeprob 값에 대한 실제 승리의 수를 플롯 할 어떻게해야할지 모르겠다. homeprob의 모든 가능한 값을 통해 루프를 실행하고 카운트를 추가 할 생각이라면 FTR == "H"?

btw - 관찰 된 것과 예상 한 결과를 비교할 수있는 더 좋은 방법이 있다고 생각되면 알려 주시기 바랍니다.

감사합니다.

+0

'homeprob' 변수를 이산 간격으로 저장하기 위해'cut'을 사용하는 것을 고려 했습니까? 그런 다음 dplyr 명령을 사용하여 집으로 돌아가는 횟수를 집계하고, 실제 승리를위한 색상과 같은 세 번째 인코딩 (막대 차트 여야 함)을 사용할 수 있습니다. 귀하의 의견에 – cbhyphen

+0

주셔서 감사합니다! 나는 커트를 사용하고 지금 20 개의 그룹이있다. 또한 그룹 값 (예 : (0.414 - 0.449))을 사용하여 데이터 프레임에 열을 추가했지만 각 그룹에 대해 homewins 수를 계산하는 루프를 작성하는 방법을 잘 모르겠습니다. for 루프를 사용했지만 성공하지는 않았습니까? –

답변

0

가정의 확률과 "H"를 비교하는 방법에 대한 몇 가지 옵션이 있다고 생각합니다 (실제 또는 예상되는 추측이라고 생각합니다). 의견에서 제안한대로 homeprob을 버킷으로 잘라내어 집계 통계에 dplyr을 사용할 수 있습니다. 그런 다음 승리를 위해 색상을 사용하거나 간단하게 플롯 homeprob 대 wins를 사용하십시오.

몇 가지 방법이 있으므로 몇 가지 옵션과 재현 가능한 예를 제공 할 것입니다. 데이터가 정상이며 때문에 나는 그것이 최선의 선택이 될 것이라고 생각하지 않지만

# 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