使用AIC比较混合物分布模型(在mixdist中计算; R)

时间:2017-10-21 14:24:15

标签: r statistics frequency-distribution model-comparison

我正在使用mixdist包将长度 - 频率数据建模到与发布的方法here非常相似的单独群组中(特别是函数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)

0 个答案:

没有答案