r - 绘制一组估计分布中的估计参数

  • 本文关键字:分布 参数 一组 绘制 r dataset
  • 更新时间 :
  • 英文 :


我使用以下代码通过对时间段和性别的数据进行分组来估计一组分布:

df.weibull <- tapply(df$attribute, list(time=df$time, gender=df$gender), fitdist, "weibull")

我想绘制这些分布随时间变化的尺度参数,每个性别都有单独的一行。我知道我可以通过以下方式访问单个比例参数:

df.weibull[1,"M"][[1]]$estimate["scale"]

但是我无法弄清楚如何直接一次访问所有比例参数。访问所有参数或如何编写原始函数以返回更易于访问的数据结构的解决方案都可以。

编辑:这是一些重现数据结构的代码:

gender.df <- c("M","M","M","M","M","M","F","F","F","F","F","F")
time.df <- c(1,1,1,2,2,2,1,1,1,2,2,2)
attribute.df <- c(10,20,30,11,21,31,45,55,65,1,2,3)
df <- data.frame(attribute.df,time.df,gender.df)
names(df) <- c("attribute", "time", "gender")
library(fitdistrplus)
df.weibull <- tapply(df$attribute, list(time=df$time, gender=df$gender), fitdist, "weibull")

您似乎正在尝试通过gendertime组来拟合 Weibull 分布。我想这只是数据集的一小部分,因为每组只有 3 个观测值。怎么样:

library(tidyverse)
library(data.table)
sumdf <- setDT(df)[, as.list(fitdist(attribute, dist= "weibull")$estimate), by = .(time, gender)]
time gender    shape     scale
1:    1      M 2.738085 22.587353
2:    2      M 2.893080 23.666143
3:    1      F 7.793204 58.553205
4:    2      F 2.738652  2.258509

然后你可以绘制例如:

ggplot(sumdf) + geom_line(aes(x = time, y = scale, col = gender))

ggplot(sumdf) + geom_line(aes(x = time, y = shape, col = gender))

最新更新