[英]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
現在我有了參數alpha0
和beta0
,如何繪制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.