使用mixtools包函数gammamixEM,可以拟合出不同的分布。作为对拟合度的检查,我的目标是在用来获取概率分布的数据的直方图上绘制概率密度函数(gammamixEM函数的结果)的图。使用功能normalmixEM可以直接使用plot.mixEM函数。 gammamixEM是否可以从gammamixEM获取概率密度图?
我已经对gammamixEM的结果尝试了plot.mixEM函数,但这不起作用(我希望需要与从gammamixEM获得的参数不同的输入,此函数才能起作用)。我搜索了mixtools软件包的手册,但是找不到用于生成gammamixEM结果图表的函数。
我尝试了以下代码,这些代码是我在stackoverflow上找到的,用于回答类似问题:
mix.object <- fit
k <- ncol(mix.object$posterior)
x <- sort(mix.object$x)
a <- hist(x, plot = FALSE)
maxy <- max(max(a$density), .3989*mix.object$lambda/mix.object$sigma)
main2 <- "Density Curves"
xlab2 <- "Data"
col2 <- 2:(k+1)
hist(x, prob = TRUE, breaks = 100, main = main2, xlab = xlab2,
ylim = c(0,maxy))
for (i in 1:k) {
lines(x, mix.object$lambda[i] *
dnorm(x,
sd = sd(x)), col = "green")
}
[Plot of gammamixEM function over histogram plot ][1]
上面的代码确实在密度图上产生了线条,但是它们与我从gammamixEM函数获得的结果不匹配(例如,与根据绘制的结果相比,为2.5%和97.5%的百分位数)行),并且不适合用于计算伽玛分布的数据分布。我也不太确定上面代码的“ dnorm”部分在做什么。我用来描述带有形状编码率/比例参数(alpha和beta / theta)的伽马函数。有什么想法吗?