文档章节

R语言 混合正态分布用似然函数估计参数

非线性方程
 非线性方程
发布于 2017/03/17 10:43
字数 385
阅读 273
收藏 0

混合正态分布用似然函数估计参数

图像为                                                      数据为R中MASS包的geyser

 

library(MASS)

attach(geyser)

#定义log-likelihood函数

 LL<-function(params,data)

 {#参数"params"是一个向量,依次包含了五个参数:p,mu1,sigma1,

 #mu2,sigma2.

 #参数"data",是观测数据。

 t1<-dnorm(data,params[2],params[3])

 t2<-dnorm(data,params[4],params[5])

 #这里的dnorm()函数是用来生成正态密度函数的。

 f<-params[1]*t1+(1-params[1])*t2

 #混合密度函数

 ll<-sum(log(f))

 #log-likelihood函数

 return(-ll)

 #nlminb()函数是最小化一个函数的值,但我们是要最大化log-

 #likeilhood函数,所以需要在“ll”前加个“-”号。

 }



#用hist函数找出初始值

hist(waiting,freq=F)

 lines(density(waiting))

 #拟合函数####optim####

 geyser.res<-nlminb(c(0.5,50,10,80,10),LL,data=waiting,

 lower=c(0.0001,-Inf,0.0001,-Inf,-Inf,0.0001),

 upper=c(0.9999,Inf,Inf,Inf,Inf))

 #初始值为p=0.5,mu1=50,sigma1=10,mu2=80,sigma2=10

 #LL是被最小化的函数。

 #data是拟合用的数据

 #lower和upper分别指定参数的上界和下界。



 #查看拟合的参数

 geyser.res$par

[1] 0.3075937 54.2026518 4.9520026 80.3603085 7.5076330

 #拟合的效果

 X<-seq(40,120,length=100)

 #读出估计的参数

 p<-geyser.res$par[1]

 mu1<-geyser.res$par[2]

 sig1<-geyser.res$par[3]

 mu2<-geyser.res$par[4]

 sig2<-geyser.res$par[5]

 #将估计的参数函数代入原密度函数。

 f<-p*dnorm(X,mu1,sig1)+(1-p)*dnorm(X,mu2,sig2)

 #作出数据的直方图

 hist(waiting,probability=T,col=0,ylab="Density",

 ylim=c(0,0.04),xlab="Eruption waiting times")

 #画出拟合的曲线

 lines(X,f)

拟合的曲线为

© 著作权归作者所有

非线性方程
粉丝 1
博文 22
码字总数 9927
作品 0
天津
程序员
私信 提问
R语言函数与模型学习笔记:残差相关性零均值检验及跨期相关系数(图)

R语言函数与模型学习笔记:残差相关性零均值检验及跨期相关系数(图) 使用极大似然估计模型参数的假设包括:残差正态性、包含截距时的零均值、以及联合正态分布。如果我们更进一步假设待估计...

原创小博客
2018/07/26
22
0
多元线性回归公式推导及R语言实现

多元线性回归 多元线性回归模型 实际中有很多问题是一个因变量与多个自变量成线性相关,我们可以用一个多元线性回归方程来表示。 为了方便计算,我们将上式写成矩阵形式: Y = XW 假设自变量维...

知然
2018/08/28
0
0
不想去健身房的我,最后被贝叶斯分析说服了...

可能经常你会听到一些很主观的评价比如“你太瘦了”或者“你怎么那么高”,但这里瘦或者高都是基于评价者的主观判断和视觉记忆做出的评述,并没有严格的参照。 作者从小被人说体型瘦小,于是...

技术小能手
2018/07/30
0
0
简述极大似然估计

极大似然估计是一种参数估计的方法。 先验概率是 知因求果,后验概率是 知果求因,极大似然是 知果求最可能的原因。 即它的核心思想是:找到参数 θ 的一个估计值,使得当前样本出现的可能性...

aliceyangxi1987
2017/07/10
0
0
logistic逻辑回归公式推导及R语言实现

Logistic逻辑回归 Logistic逻辑回归模型 线性回归模型简单,对于一些线性可分的场景还是简单易用的。Logistic逻辑回归也可以看成线性回归的变种,虽然名字带回归二字但实际上他主要用来二分类...

知然
2018/09/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
226
9
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
2
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
2
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部