R语言代写实现有限混合模型建模分析

原文连接:http://tecdat.cn/?p=6129

 

介绍

有限混合模型在应用于数据时很是有用,其中观察来自不一样的群体,而且群体隶属关系未知。  微信

模拟数据

首先,咱们将模拟一些数据。让咱们模拟两个正态分布 - 一个平均值为0,另外一个平均值为50,二者的标准差为5。app

m1 <- 0
m2 <- 50
sd1 <- sd2 <- 5
N1 <- 100
N2 <- 10

a <- rnorm(n=N1, mean=m1, sd=sd1)
b <- rnorm(n=N2, mean=m2, sd=sd2)

如今让咱们将数据“混合”在一块儿......post

​  

 

 

 

print(table(clusters(flexfit), data$class))
##    
##       1   2
##   1 100   0
##   2   0  10

参数怎么样?大数据

cat('pred:', c1[1], '\n')
cat('true:', m1, '\n\n')
cat('pred:', c1[2], '\n')
cat('true:', sd1, '\n\n')

cat('pred:', c2[1], '\n')
cat('true:', m2, '\n\n')
cat('pred:', c2[2], '\n')
cat('true:', sd2, '\n\n')
## pred: -0.5613484 
## true: 0 
## 
## pred: 4.799484 
## true: 5 
## 
## pred: 52.86911 
## true: 50 
## 
## pred: 6.89413 
## true: 5

让咱们可视化真实数据和咱们拟合的混合模型。flex

ggplot(data) +
geom_histogram(aes(x, ..density..), binwidth = 1, colour = "black", fill = "white") +
stat_function(geom = "line", fun = plot_mix_comps,
                args = list(c1[1], c1[2], lam[1]/sum(lam)),
 stat_function(geom = "line", fun = plot_mix_comps,
                args = list(c2[1], c2[2], lam[2]/sum(lam)),
                colour = "blue", lwd = 1.5) +
ylab("Density")

看起来咱们作得很好! ui

 

 

例子

如今,让咱们考虑一个花瓣宽度为鸢尾花的真实例子。 spa

p <- ggplot(iris, aes(x = Petal.Width)) + 
  geom_histogram(aes(x = Petal.Width, ..density..), binwidth = 0.1, colour = "black", fill = "white")
p

 

​ 

 

flexfit <- flexmix(Petal.Width ~ 1, data = iris, k = 3, model = list(mo1, mo2, mo3))

print(table(clusters(flexfit), iris$Species))
##    
##     setosa versicolor virginica
##   1      0          2        46
##   2      0         48         4
##   3     50          0         0

geom_histogram(aes(x = Petal.Width, ..density..), binwidth = 0.1, colour = "black", fill = "white") +
                 args = list(c1[1], c1[2], lam[1]/sum(lam)),
                colour = "red", lwd = 1.5) +
stat_function(geom = "line", fun = plot_mix_comps,
                args = list(c2[1], c2[2], lam[2]/sum(lam)),
 stat_function(geom = "line", fun = plot_mix_comps,
                args = list(c3[1], c3[2], lam[3]/sum(lam)),
                colour = "green", lwd = 1.5) +
ylab("Density")

 

即便咱们不知道潜在的物种分配,咱们也可以对花瓣宽度的基本分布作出某些陈述 。3d

 

 

若是您有任何疑问,请在下面发表评论。   

大数据部落 -中国专业的第三方数据服务提供商,提供定制化的一站式数据挖掘和统计分析咨询服务code

统计分析和数据挖掘咨询服务:y0.cn/teradat(咨询服务请联系官网客服orm

点击这里给我发消息QQ:3025393450

 

​QQ交流群:186388004 

【服务场景】  

科研项目; 公司项目外包;线上线下一对一培训;数据爬虫采集;学术研究;报告撰写;市场调查。

【大数据部落】提供定制化的一站式数据挖掘和统计分析咨询

欢迎选修咱们的R语言数据分析挖掘必知必会课程!

 

 
欢迎关注 微信公众号,了解更多数据干货资讯!
 
相关文章
相关标签/搜索