1

我正在使用mixdist包将长度频率数据建模为单独的群组,这与此处发布的方法非常相似(特别是函数 mix())。

目前,我一直在查看原始数据的大小频率直方图,确定要尝试的合理数量的组件(通常为 2 或 3 个),然后选择卡方最低的模型(只要图/均值是明智的)。我使用相同的方法来选择要使用的发行版。

但是,我想进一步了解我的模型选择。

首先,我想比较不同的分布(即正态、对数正态和伽玛)(提取的分量保持不变)——最好使用 AIC

其次,我想使用 AIC 评估模型与基础数据之间的距离

最后,我想估计一个模型相对于正在评估的其他模型最能代表基础数据的概率。

但是,我不确定如何使用混合数据来做到这一点!任何建议都将不胜感激(以及评估混合模型执行情况的一些替代方法)。

这是一个示例代码....

library(mixdist)

#Build data vector "x" 
x1 <- rnorm(1000, mean=7, sd=2.0)  
x2 <- rnorm(500, mean=17, sd=1.5)  
x3 <- rnorm(300, mean=13, sd=1.5)  
x <- c(x1, x2, x3)  

#Plot a histogram   
breaks <- 60  
his <- hist(x, breaks=breaks)  
df <- data.frame(mid=his$mids, cou=his$counts)  
head(df)  

#not sure whether there are 2 or 3 cohorts/components here so would need to             
try both
#2 cohorts
guemea <- c(8, 16)  
guesig <- c(1, 1)  
guedis1 <- "norm"  
guedis2 <- "lnorm"  
guedis3 <- "gamma"  
(fit21 <- mix(as.mixdata(df), mixparam(mu=guemea, sigma=guesig),    dist=guedis1))  
(fit22 <- mix(as.mixdata(df), mixparam(mu=guemea, sigma=guesig), dist=guedis2))  
(fit23 <- mix(as.mixdata(df), mixparam(mu=guemea, sigma=guesig), dist=guedis3)) 

#3 cohorts
guemea <- c(8, 14, 17)  
guesig <- c(1, 1, 1)  
guedis1 <- "norm"  
guedis2 <- "lnorm"  
guedis3 <- "gamma"  
(fit31 <- mix(as.mixdata(df), mixparam(mu=guemea, sigma=guesig), dist=guedis1))  
(fit32 <- mix(as.mixdata(df), mixparam(mu=guemea, sigma=guesig), dist=guedis2))  
(fit33 <- mix(as.mixdata(df), mixparam(mu=guemea, sigma=guesig), dist=guedis3))  

summary(fit21)
summary(fit22)
summary(fit23)
summary(fit31)
summary(fit32)
summary(fit33)
4

0 回答 0