簡體   English   中英

在R中繪制beta分布

[英]Plot beta distribution in R

使用數據集Lahman::Batting我估算了beta分布的參數。 現在,我想將此經驗導出的beta分布繪制到據此估計的直方圖上

library(dplyr)
library(tidyr)
library(Lahman)

career <- Batting %>%
  filter(AB > 0) %>%
  anti_join(Pitching, by = "playerID") %>%
  group_by(playerID) %>%
  summarize(H = sum(H), AB = sum(AB)) %>%
  mutate(average = H / AB)

我可以將RBI的分布圖繪制為:

career %>% 
  filter(AB > 500) %>% 
  ggplot(aes(x = average)) +
  geom_histogram() +
  geom_freqpoly(color = "red")

並獲得:

在此處輸入圖片說明

我知道我可以使用+ geom_freqpoly獲得:

在此處輸入圖片說明

但是我想要平滑的beta分布 我可以通過以下方式估算beta參數:

career_filtered <- career %>%
    filter(AB >= 500)

m <- MASS::fitdistr(career_filtered$average, dbeta,
                    start = list(shape1 = 1, shape2 = 10))

alpha0 <- m$estimate[1] # parameter 1
beta0 <- m$estimate[2] # parameter 2

現在我有了參數alpha0beta0 ,如何繪制Beta分布,以便獲得如下所示的結果:

在此處輸入圖片說明

這個問題是基於我在這里閱讀的帖子。

所有代碼,包括繪圖代碼,都可以在此處找到。 以下代碼用於獲取請求的繪圖:

ggplot(career_filtered) +
  geom_histogram(aes(average, y = ..density..), binwidth = .005) +
  stat_function(fun = function(x) dbeta(x, alpha0, beta0), color = "red",
                size = 1) +
  xlab("Batting average")

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM