论文R语言复现

2023-11-17

高斯混合概率在众多领域都有重要应用,依据已知观测数据估计高斯模型中未知参数就显得尤为重要,由于观测值具体来自于高斯分布的哪个分模型是未知的,那么利用传统的极大似然( MLE) 方法进行参数估计就变得十分困难。引入 EM 算法,该方法通过构造分布已知的潜变量对模型进行参数估计,经过多次迭代优化可以使估计值逐渐逼近真实值。本文主要复现该篇文章的实证部分~

一、复现内容

在这里插入图片描述

在这里插入图片描述

二、复现代码

alpha_1<-0.5
alpha_2<-0.5
mu_1<-0.36
mu_2<-0.25
sigma_1<-1.4
sigma_2<-1.3

fi<-function(x,mu,sigma){
  y<-1/(sqrt(2*pi)*sigma)*exp(-(x-mu)**2/(2*sigma**2))
  return(y)
}

x<-c(0.900,-2.618,1.235,-0.382,0.850,0.443,0.444,0.185,1.502,1.071)


gauss_em<-function(x,alpha,mu,sigma){
  z<-alpha*fi(x,mu,sqrt(sigma))/(alpha_1*fi(x,mu_1,sqrt(sigma_1))+alpha_2*fi(x,mu_2,sqrt(sigma_2)))
  mu<-sum(z*x)/sum(z)
  sigma<-sum(z*((x-mu)**2))/sum(z)
  alpha<-mean(z)  
  parms<-list(alpha,mu,sigma)
  return(parms)
}

gauss_em(x,alpha_1,mu_1,sigma_1)  
gauss_em(x,alpha_2,mu_2,sigma_2)

alpha1_vec<-c()
alpha2_vec<-c()
mu1_vec<-c()
mu2_vec<-c()
sigma1_vec<-c()
sigma2_vec<-c()

for(i in 1:20){
  result_1<-gauss_em(x,alpha_1,mu_1,sigma_1)
  result_2<-gauss_em(x,alpha_2,mu_2,sigma_2)
  alpha_1<-result_1[[1]]
  mu_1<-result_1[[2]]
  sigma_1<-result_1[[3]]
  
  alpha_2<-result_2[[1]]
  mu_2<-result_2[[2]]
  sigma_2<-result_2[[3]]
  
  alpha1_vec<-c(alpha1_vec,alpha_1)
  alpha2_vec<-c(alpha2_vec,alpha_2)
  mu1_vec<-c(mu1_vec,mu_1)
  mu2_vec<-c(mu2_vec,mu_2)
  sigma1_vec<-c(sigma1_vec,sigma_1)
  sigma2_vec<-c(sigma2_vec,sigma_2)
  
}



em_rst<-data.frame(alpha1_vec,alpha2_vec,
                   mu1_vec,mu2_vec,sigma1_vec,sigma2_vec)
em_rst


plot_rst<-function(x,xlab,title){
  plot(1:20,
       x,
       type='o',
       xlab=xlab,
       main=title,
       xaxt='n',
       col='red')
  axis(1,1:20)
}

par(mfrow=c(2,3))
params_names<-c("alpha1","alpha2","mu1","mu2","sigma1","sigma2")
params_list<-list(alpha1_vec,alpha2_vec,mu1_vec,mu2_vec,sigma1_vec,sigma2_vec)

for(i in 1:length(params_list)){
  plot_rst(params_list[[i]],
           params_names[i],
           paste0('EM算法——',params_names[i],'迭代趋势'))
}

在这里插入图片描述
在这里插入图片描述

注意:论文表格中的 σ \sigma σ μ \mu μ 标记反了!

参考文章:
[1]梁盛楠.基于EM算法的高斯混合模型参数估计[J].黔南民族师范学院学报,2020,40(04):5-8.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

论文R语言复现 的相关文章

  • CNN,Transformer,MLP三分天下

    title 论文列表 1 MLP Mixer MLP Mixer An all MLP Architecture for Vision 2 MetaFormer MetaFormer is Actually What You Need fo
  • 原生JS实现贪吃蛇游戏

    原生JS实现贪吃蛇游戏 贪吃蛇游戏 原生JavaScript 贪吃蛇游戏思路分析 游戏思想 面向对象的思想 三个js文件分别代表三个对象 三个对象相互独立 在HTML中控制全局 使用面向对象思想的好处 贪吃蛇游戏采用面向对象的思想去实现 我

随机推荐

  • 2023年第七届航空航天、机械与机电工程国际会议(CAMME 2023)

    2023年第七届航空航天 机械与机电工程国际会议 CAMME 2023 重要信息 会议网址 www camme org 会议时间 2023年2月18 20日 召开地点 中国广州 截稿时间 2023年12月30日 录用通知 投稿后2周内 收录
  • 微信公众号开发笔记6(WEUI组件实现图片上传、预览、删除)

    没有废话直接上代码 1 新建HTML5 样式自行百度下载
  • 数学篇(二) 方差、标准差、协方差

    1 均值 均值就是将所有的数据相加求平均 求得一个样本数据的中间值 2 标准差 标准差也被称为标准偏差 公式如下所示 简单来说 标准差是一组数平均值分散成都的一种度量 一个较大的标准差 代表大部分数值和其平均值之间差异较大 一个较小的标准差
  • 方差分析 / 主成分分析 / 因子分析 / 聚类分析

    一 方差分析 水平 因素的不同状态 分组是按照因素的不同水平划分的 因变量 在分组试验中 对试验对象所观测记录的变量 它是受各因素影响的变量 常见的方差分析类型 单因素方差分析 多因素方差分析 单因素方差分析 是指检验由单一因素影响一个因变
  • 浅谈对软件工程的认识与理解

    数据结构与算法 计算机组成原理 计算机操作系统 计算机网络 软件工程需重视的 软件工程涉及的资源有 人力 资金 时间的合理分配 涉及到文化与管理等 及各种规划化 软件开发是一个把用户需要转化为软件需求 把软件需求转化为软件设计 用软件代码来
  • 解决XML本地无法找到的问题

    Java开发中 xml一般网络上面获取即可 但是如果想本地解析测试 直接放在文件夹里面加内容是会找不到相关问题 解决方法就是找到文件所在系统的绝对路径即可 寻找路径方法 右键xml文件 gt properties gt Location 注
  • 双线性插值原理分析及c++实现

    双线性插值原理分析及C 实现 双线性插值 又称为双线性内插 其核心思想利用虚拟点四周真实存在的四个像素点分别在两个方向上进行线性插值操作 公式推导过程 上述图片中像素点的说明 Q11 Q21 Q12 Q22 分别为虚拟点周围四个真实存在的像
  • MATLAB中reshape的使用方法整理

    1 语法 1 B reshape A m n 将矩阵A的元素返回到一个m n的矩阵B 如果A中没有m n个元素则返回一个错误 2 B reshape A m n p or B reshape A m n p 把A中元素进行重塑成m n p
  • 使用jenkins部署项目

    使用jenkins部署项目 IP 安装环境 系统 192 168 201 147 tomcat jenkins centos8 redhat8 192 168 201 149 tomcat centos8 redhat8 需求 通过192
  • WPF_性能优化

    WPF Windows Presentation Foundation 是微软推出的基于Windows的用户界面框架 运行在 NET Framework 3 0及以上版本 WPF是基于DirectX引擎的 支持GPU硬件加速 在不支持硬件加
  • 任务 01、重塑视觉艺术:Midjourney AI绘画的无限可能

    1 1 任务目标 了解什么是MidJourney MidJourney公司简介 了解生成式人工智能MidJourney原理 MidJourney 能做什么 目前市面主流的Ai绘画工具有哪些 MidJourney的商业价值与企业应用 1 2
  • js逆向-ast-hook定位参数生成位置

    声明 本文仅供参考学习 切勿用于其他途径 违者后果自负 前言 不了解ast hook的小伙伴可以翻看上一篇文章 链接 ast hook 以一个简单的网站为例 网址 aHR0cHM6Ly93d3cueGluaXVkYXRhLmNvbS8 接口
  • 算法与数据结构学习笔记

    文章目录 常用排序方式的时间 空间复杂度以及稳定性的总结 1 冒泡排序 2 选择排序 3 插入排序 4 希尔排序 基于插入排序 注意对比 5 归并排序 6 快速排序 最流行的排序算法 大多数情况都是最快的 7 堆排序 找出前几个前几个最大的
  • Ha-NeRF: Hallucinated Neural Radiance Fields in the Wild 代码复现与解读

    code GitHub rover xingyu Ha NeRF CVPR 2022 Ha NeRF Hallucinated Neural Radiance Fields in the Wild CVPR 2022 Ha NeRF Hal
  • 【批处理DOS-CMD-汇总】扩展变量-延迟变量cmd /v:on、cmd /v:off、setlocal enabledelayedexpansion、DisableDelayedExpansion

    Reference 批处理命令 for kaizen 博客园 Bat脚本之延时变量cmd v on komomon s blog的博客 CSDN博客 bat延迟变量 一 延迟变量 的存在背景 批处理的执行过程是 自上而下 逐条执行 而 逐条
  • Vue项目部署到服务器时上传报错“Uncaught (in promise) TypeError: s.upload.addEventListener is not a function”

    一 报错原因 使用vue admin element框架进行在本地文件上传以及富文本框中的文件上传是没有问题的 但是在上传部署vue项目到服务器上时 就会报如下图中一个错误 二 那么应该怎么解决呢 可以查找如下两个文件 并且进行对应值的修改
  • mysql查询时间datetime指定区间的所有值

    DROP TABLE IF EXISTS flight CREATE TABLE flight id int 11 NOT NULL start time datetime NOT NULL end time datetime NOT NU
  • python中有堆吗?

    堆 英语 heap 是计算机科学中一类特殊的数据结构的统称 堆的定义 n个元素的序列 k1 k2 ki kn 当且仅当满足下关系时 称之为堆 推荐学习 Python基础视频教程 这是标准的堆的定义 但是python 中并没有独立的堆类型 只
  • 微信小程序开发教程

    一 准备 下载微信小程序开发者工具 下载地址 注册微信小程序 前往注册 微信小程序开发文档 前往阅览 打开开发者工具 用微信扫码进入创建页面 填写配置如下 需要注意的是 AppId可以选择已经注册的账号Appid 也可以选择测试号 区别是测
  • 论文R语言复现

    高斯混合概率在众多领域都有重要应用 依据已知观测数据估计高斯模型中未知参数就显得尤为重要 由于观测值具体来自于高斯分布的哪个分模型是未知的 那么利用传统的极大似然 MLE 方法进行参数估计就变得十分困难 引入 EM 算法 该方法通过构造分布