补充资料——自己实现极大似然估计(最大似然估计)MLE


#取出MASS包这中的数据data(geyser,package="MASS")head(geyser)attach(geyser)par(bg='lemonchiffon')hist(waiting,freq=F,col="lightcoral")#freq=F要加上,否则就无法添加线了lines(density(waiting),lwd=2,col="cadetblue4")#根据图像,我们认为其在前后分别是两个正态分布函数的组合#定义 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])#f是概率密度函数f<-params[1]*t1+(1-params[1])*t2#混合密度函数ll<-sum(log(f))#log‐likelihood 函数return(-ll)#nlminb()函数是最小化一个函数的值,#但我们是要最大化 log‐likeilhood 函数#所以需要在“ ll”前加个“ ‐”号。}#估计函数####optim##### debugonce(nlminb)geyser.res<-nlminb(c(0.5,50,10,80,10),LL,data=waiting,lower=c(0.0001,-Inf,0.0001,-Inf,0.0001),upper=c(0.9999,Inf,Inf,Inf,Inf))#初始值为 p=0.5,mu1=50,sigma1=10,mu2=80,sigma2=10#初始值也会被传递给LL#LL 是被最小化的函数。#data 是估计用的数据(传递给我们的LL)#lower 和 upper 分别指定参数的上界和下界。#查看拟合的参数geyser.res$par#拟合的效果#解释变量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='lightpink3',ylab="Density",ylim=c(0,0.04),xlab="Eruption waiting times")#画出拟合的曲线lines(X,f,col='lightskyblue3',lwd=2)detach(geyser)
function (start, objective, gradient = NULL, hessian = NULL,..., scale = 1, control = list(), lower = -Inf, upper = Inf){par <- setNames(as.double(start), names(start))n <- length(par)iv <- integer(78 + 3 * n)v <- double(130 + (n * (n + 27))/2).Call(C_port_ivset, 2, iv, v)if (length(control)) {nms <- names(control)if (!is.list(control) || is.null(nms))stop("'control' argument must be a named list")pos <- pmatch(nms, names(port_cpos))if (any(nap <- is.na(pos))) {warning(sprintf(ngettext(length(nap), "unrecognized control element named %s ignored","unrecognized control elements named %s ignored"),paste(sQuote(nms[nap]), collapse = ", ")), domain = NA)pos <- pos[!nap]control <- control[!nap]}ivpars <- pos <= 4vpars <- !ivparsif (any(ivpars))iv[port_cpos[pos[ivpars]]] <- as.integer(unlist(control[ivpars]))if (any(vpars))v[port_cpos[pos[vpars]]] <- as.double(unlist(control[vpars]))}obj <- quote(objective(.par, ...))rho <- new.env(parent = environment())assign(".par", par, envir = rho)grad <- hess <- low <- upp <- NULLif (!is.null(gradient)) {grad <- quote(gradient(.par, ...))if (!is.null(hessian)) {if (is.logical(hessian))stop("logical 'hessian' argument not allowed. See documentation.")hess <- quote(hessian(.par, ...))}}if (any(lower != -Inf) || any(upper != Inf)) {low <- rep_len(as.double(lower), length(par))upp <- rep_len(as.double(upper), length(par))}else low <- upp <- numeric().Call(C_port_nlminb, obj, grad, hess, rho, low, upp, d = rep_len(as.double(scale),length(par)), iv, v)iv1 <- iv[1L]list(par = get(".par", envir = rho), objective = v[10L],convergence = (if (iv1 %in% 3L:6L) 0L else 1L), iterations = iv[31L],evaluations = c(`function` = iv[6L], gradient = iv[30L]),message = if (19 <= iv1 && iv1 <= 43) {if (any(B <- iv1 == port_cpos)) sprintf("'control' component '%s' = %g, is out of range",names(port_cpos)[B], v[iv1]) else sprintf("V[IV[1]] = V[%d] = %g is out of range (see PORT docu.)",iv1, v[iv1])} else port_msg(iv1))}

附件列表
补充资料——自己实现极大似然估计(最大似然估计)MLE的更多相关文章
- 最大似然估计(Maximum Likelihood,ML)
先不要想其他的,首先要在大脑里形成概念! 最大似然估计是什么意思?呵呵,完全不懂字面意思,似然是个啥啊?其实似然是likelihood的文言翻译,就是可能性的意思,所以Maximum Likeliho ...
- 最大似然估计 (MLE)与 最大后验概率(MAP)在机器学习中的应用
最大似然估计 MLE 给定一堆数据,假如我们知道它是从某一种分布中随机取出来的,可是我们并不知道这个分布具体的参,即“模型已定,参数未知”. 例如,对于线性回归,我们假定样本是服从正态分布,但是不知道 ...
- 【模式识别与机器学习】——最大似然估计 (MLE) 最大后验概率(MAP)和最小二乘法
1) 极/最大似然估计 MLE 给定一堆数据,假如我们知道它是从某一种分布中随机取出来的,可是我们并不知道这个分布具体的参,即“模型已定,参数未知”.例如,我们知道这个分布是正态分布,但是不知道均值和 ...
- 最大似然估计 (MLE) 最大后验概率(MAP)
1) 最大似然估计 MLE 给定一堆数据,假如我们知道它是从某一种分布中随机取出来的,可是我们并不知道这个分布具体的参,即"模型已定,参数未知". 例如,我们知道这个分布是正态分布 ...
- 深度学习中交叉熵和KL散度和最大似然估计之间的关系
机器学习的面试题中经常会被问到交叉熵(cross entropy)和最大似然估计(MLE)或者KL散度有什么关系,查了一些资料发现优化这3个东西其实是等价的. 熵和交叉熵 提到交叉熵就需要了解下信息论 ...
- 机器学习的MLE和MAP:最大似然估计和最大后验估计
https://zhuanlan.zhihu.com/p/32480810 TLDR (or the take away) 频率学派 - Frequentist - Maximum Likelihoo ...
- 最大似然估计和最大后验概率MAP
最大似然估计是一种奇妙的东西,我觉得发明这种估计的人特别才华.如果是我,觉得很难凭空想到这样做. 极大似然估计和贝叶斯估计分别代表了频率派和贝叶斯派的观点.频率派认为,参数是客观存在的,只是未知而矣. ...
- 似然函数 | 最大似然估计 | likelihood | maximum likelihood estimation | R代码
学贝叶斯方法时绕不过去的一个问题,现在系统地总结一下. 之前过于纠结字眼,似然和概率到底有什么区别?以及这一个奇妙的对等关系(其实连续才是f,离散就是p). 似然函数 | 似然值 wiki:在数理统计 ...
- 机器学习基础系列--先验概率 后验概率 似然函数 最大似然估计(MLE) 最大后验概率(MAE) 以及贝叶斯公式的理解
目录 机器学习基础 1. 概率和统计 2. 先验概率(由历史求因) 3. 后验概率(知果求因) 4. 似然函数(由因求果) 5. 有趣的野史--贝叶斯和似然之争-最大似然概率(MLE)-最大后验概率( ...
随机推荐
- vs code中文扩展包
vs code 中文拓展安装失败时,可以手动下载安装,下载对版本的中文包. https://marketplace.visualstudio.com/_apis/public/gallery/publ ...
- C语言之指针若干问题
1.指针变量的赋值问题. 常常有偷懒的小伙子,这样赋值 int *Pointer = 3:/ 这是给Pointer 所指的变量赋值,刚创建Pointer时,它所指的变量是不固定的,可能是某个重要的系 ...
- Python3.0科学计算学习之绘图(二)
(1) np.mashgrid()函数:-----生成网络点坐标矩阵,可以是二维网络矩阵,也可以是三维网络矩阵.其中,每个交叉点就是网络点,描述这些网络点的矩阵就是坐标矩阵(横坐标矩阵X中的每个元素与 ...
- 北京大学Cousera学习笔记--1-学习规划
1.计算机导论与C语言基础 1>.计算导论:计算机的基本原理.计算机的发展趋势.程序运行的基本原理 2>.C程序设计:感性认识C程序.理性认识C程序:机构化的程序-函数.更多的数据结构 2 ...
- vs2017 git凭证问题
安装完tfs2017(自带git)后,连接git代码服务器,报authorication错误.这是vs2017的bug.尝试了许多种方案后,最简单的干脆手动添加如下3个凭证.一定要核对好地址中的. ...
- 从网卡发送数据再谈TCP/IP协议—网络传输速度计算-网卡构造
在<在深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP>里面提到 单个TCP包每次打包1448字节的数据进行发送(以太网Ethernet最大的数据帧是1518字节,以 ...
- TCP三次握手及TCP连接状态 TCP报文首部格式
建立TCP连接时的TCP三次握手和断开TCP连接时的4次挥手整体过程如下图: 开个玩笑 ACK: TCP协议规定,只有ACK=1时有效,连接建立后所有发送的报文ACK必须为1 SYN(SYNchron ...
- 装饰者模式 Decorator
项目:咖啡计费系统 背景:现有系统中有一个抽象类Beverage,有2个抽象方法GetDescription和Cost. namespace DecoratorPattern { /// <su ...
- oracle修改审计功能
oracle修改审计功能 如果没有关闭审计功能,审计日志文件默认保存在位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/ 关闭审计:alter system set au ...
- (cvpr 2018)Technology details of SMRD
1.摘要 近年来,深度卷积神经网络(CNN)方法在单幅图像超分辨率(SISR)领域取得了非常大的进展.然而现有基于 CNN 的 SISR 方法主要假设低分辨率(LR)图像由高分辨率(HR)图像经过双三 ...