在相同的ggplot2 (R)上拟合负二项、正态和泊松密度函数,并将其缩放到计数数据,可以通过以下步骤实现:
library(ggplot2)
library(dplyr)
# 假设数据集为df,包含一个名为count的计数变量
df <- data.frame(count = c(10, 15, 20, 25, 30))
base_plot <- ggplot(df, aes(x = count)) +
geom_bar(stat = "identity", fill = "lightblue", color = "black")
# 使用MASS库中的fitdistr函数拟合负二项分布
library(MASS)
fit_negbinom <- fitdistr(df$count, "negative binomial")
# 提取拟合结果的参数
size <- fit_negbinom$estimate[1]
mu <- fit_negbinom$estimate[2]
# 创建负二项分布的密度函数
density_negbinom <- function(x) {
dnbinom(x, size = size, mu = mu)
}
# 添加负二项分布的曲线到基础图层
plot_negbinom <- base_plot +
stat_function(fun = density_negbinom, color = "red", size = 1) +
labs(title = "Negative Binomial Distribution")
# 使用stats库中的fitdistr函数拟合正态分布
fit_normal <- fitdistr(df$count, "normal")
# 提取拟合结果的参数
mean <- fit_normal$estimate[1]
sd <- fit_normal$estimate[2]
# 创建正态分布的密度函数
density_normal <- function(x) {
dnorm(x, mean = mean, sd = sd)
}
# 添加正态分布的曲线到基础图层
plot_normal <- base_plot +
stat_function(fun = density_normal, color = "blue", size = 1) +
labs(title = "Normal Distribution")
# 使用stats库中的fitdistr函数拟合泊松分布
fit_poisson <- fitdistr(df$count, "poisson")
# 提取拟合结果的参数
lambda <- fit_poisson$estimate[1]
# 创建泊松分布的密度函数
density_poisson <- function(x) {
dpois(x, lambda = lambda)
}
# 添加泊松分布的曲线到基础图层
plot_poisson <- base_plot +
stat_function(fun = density_poisson, color = "green", size = 1) +
labs(title = "Poisson Distribution")
# 使用gridExtra库中的grid.arrange函数组合图层
library(gridExtra)
grid.arrange(plot_negbinom, plot_normal, plot_poisson, ncol = 3)
这样,你就可以在相同的ggplot2图上拟合负二项、正态和泊松密度函数,并将其缩放到计数数据。
领取专属 10元无门槛券
手把手带您无忧上云