gpt4 book ai didi

r - 用R中的dlnorm叠加数据的密度直方图,ggplot

转载 作者:行者123 更新时间:2023-12-04 07:13:54 26 4
gpt4 key购买 nike

我使用加拿大的人口普查数据,x 轴为变量 Wage,y 轴为密度。我试图用对数正态分布 dlnorm 覆盖我创建的图形但我不确定使用什么作为 meanlog 和 sdlog 参数值。我试过使用 mean(data$Wages)sd(data$Wages) ,以及取两者的自然对数等。没有什么可以给我一个类似于我生成的密度直方图的图表。
这是因为我的数据不是对数正态的吗?如何找到正确的 meanlog 和 sdlog 参数?
这是我的代码:

inc_plot <- data_adults %>%
ggplot(aes(x=Wages)) +
geom_histogram(aes(y=..density..), bins=100,fill="transparent", colour="black")+
scale_x_continuous(labels=scales::comma) +
stat_function(fun = dlnorm,
args = list(meanlog = 48637.91, sdlog = 62459.15),
col = "red")

inc_plot
当前参数使用前面提到的 mean()sd()职能。
enter image description here

最佳答案

如果您设置 meanlog = mean(log(your_data))同样sdlog = sd(log(your_data))密度应该接近直方图。

library(ggplot2)


df <- data.frame(x = rlnorm(1e4))

ggplot(df, aes(x)) +
geom_histogram(
aes(y = after_stat(density)),
bins = 100, fill = "transparent", colour = "black"
) +
stat_function(
fun = dlnorm,
args = list(meanlog = mean(log(df$x)), sdlog = sd(log(df$x))),
colour = "red"
)

创建于 2021-08-23 由 reprex package (v2.0.1)
另一种方法是使用 ggh4x::stat_theodensity(distri = "lnorm", colour = "red") . (免责声明:我是 ggh4x 的作者)

关于r - 用R中的dlnorm叠加数据的密度直方图,ggplot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68898697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com