Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用AIC比较混合分布模型(在mixdist;R中计算)_R_Statistics_Frequency Distribution_Model Comparison - Fatal编程技术网

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

使用AIC比较混合分布模型(在mixdist;R中计算),r,statistics,frequency-distribution,model-comparison,R,Statistics,Frequency Distribution,Model Comparison,我使用这个包将长度-频率数据建模到不同的群组中,非常类似于发布的方法(特别是函数mix()) 目前,我一直在查看原始数据的大小-频率直方图,确定要尝试的组件的合理数量(通常为2或3),然后选择卡方最小的模型(只要图/平均值合理)。我使用相同的方法来选择要使用的发行版 不过,我想进一步介绍一下我的车型选择 首先,我想比较不同的分布(即正态分布、对数正态分布和伽马分布)(提取的成分保持不变)-理想情况下使用AIC 其次,我想使用AIC评估模型和基础数据之间的距离 最后,我想估算一个模型相对于其他被评

我使用这个包将长度-频率数据建模到不同的群组中,非常类似于发布的方法(特别是函数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)
库(mixdist)
#构建数据向量“x”

x1使用
mclust
包。我想你可以直接做你想做的一切。看看这个,它可能会帮助你。我不知道您使用哪种方法,但EM是混合数据的常用方法谢谢@Silver_80提供您的建议/有用的链接!我确实在使用EM,看起来mclust确实有计算BIC的潜力。我希望我在mixdist中遗漏了一些东西,而不是必须学习新的软件包/重新分析我的数据。。。因此,我仍然在寻找使用mixdist软件包选择模型的替代方法。如果没有,也许你可以加上你的评论作为回答,我可以接受。谢谢使用
mclust
package。我想你可以直接做你想做的一切。看看这个,它可能会帮助你。我不知道您使用哪种方法,但EM是混合数据的常用方法谢谢@Silver_80提供您的建议/有用的链接!我确实在使用EM,看起来mclust确实有计算BIC的潜力。我希望我在mixdist中遗漏了一些东西,而不是必须学习新的软件包/重新分析我的数据。。。因此,我仍然在寻找使用mixdist软件包选择模型的替代方法。如果没有,也许你可以加上你的评论作为回答,我可以接受。谢谢