我通过使用以下代码对时间段和性别数据进行分组来估算一组分布:
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")
答案 0 :(得分:0)
您似乎正在尝试通过data:image/png;base64
和gender
组符合Weibull分布。我想这只是数据集的一个小部分,因为每组只有3个观察结果。怎么样:
time
然后你可以绘制例如:
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))