概率基础——极大似然估计

概率基础——极大似然估计

引言

极大似然估计(Maximum Likelihood Estimation,简称MLE)是统计学中最常用的参数估计方法之一,它通过最大化样本的似然函数来估计参数值,以使得样本出现的概率最大化。极大似然估计在各个领域都有着广泛的应用,例如机器学习、生物统计学、金融等。本文将介绍极大似然估计的理论基础、公式推导过程,并通过案例和Python代码进行实现和模拟,以帮助读者更好地理解这一重要的概率基础知识。

理论及公式

极大似然估计的基本思想

极大似然估计的基本思想是:在给定样本的情况下,找到一个参数值,使得观察到这个样本的概率最大。假设我们有一个参数为 θ \theta θ的模型,记为 P ( X ∣ θ ) P(X|\theta) P(Xθ),其中 X X X是样本, θ \theta θ是参数。那么, θ \theta θ的极大似然估计 θ ^ \hat{\theta} θ^可以通过最大化似然函数 L ( θ ) L(\theta) L(θ)来求得,即:

θ ^ = arg ⁡ max ⁡ θ L ( θ ) \hat{\theta} = \underset{\theta}{\arg \max} \, L(\theta) θ^=θargmaxL(θ)

似然函数

似然函数 L ( θ ) L(\theta) L(θ)表示在给定参数 θ \theta θ 下观察到样本 X X X的概率密度函数(或概率质量函数)的乘积。对于连续型随机变量,似然函数通常表示为概率密度函数的连乘积;对于离散型随机变量,似然函数通常表示为概率质量函数的连乘积。

对数似然函数

在实际应用中,通常使用对数似然函数(Log-Likelihood Function)来简化计算,因为连乘积的求导相对繁琐,而连加的求导更加简单。对数似然函数 ℓ ( θ ) \ell(\theta) (θ) 定义为似然函数的自然对数:

ℓ ( θ ) = log ⁡ L ( θ ) \ell(\theta) = \log L(\theta) (θ)=logL(θ)

极大似然估计的求解

要找到极大似然估计 θ ^ \hat{\theta} θ^,我们需要对对数似然函数 ℓ ( θ ) \ell(\theta) (θ)求导,并令导数等于零,求解得到的解即为估计值。

d ℓ ( θ ) d θ = 0 \frac{d\ell(\theta)}{d\theta} = 0 dθd(θ)=0

例子

下面我们通过一个简单的例子来说明极大似然估计的应用。假设我们有一个硬币,想要估计出正面朝上的概率 p p p。我们连续地抛掷这个硬币,观察到正面朝上 k k k次,总共抛掷了 n n n 次。我们希望通过这些观察结果来估计正面朝上的概率 p p p

案例

极大似然估计硬币的正面朝上概率

假设我们连续抛掷一个硬币10次,观察到有7次正面朝上和3次反面朝上。我们想要估计出正面朝上的概率 ( p )。根据二项分布的概率密度函数,我们可以得到似然函数:

L ( p ) = ( 10 7 ) p 7 ( 1 − p ) 3 L(p) = \binom{10}{7} p^7 (1-p)^3 L(p)=(710)p7(1p)3

我们可以求得对数似然函数:

ℓ ( p ) = log ⁡ L ( p ) = log ⁡ ( 10 7 ) + 7 log ⁡ p + 3 log ⁡ ( 1 − p ) \ell(p) = \log L(p) = \log \binom{10}{7} + 7 \log p + 3 \log (1-p) (p)=logL(p)=log(710)+7logp+3log(1p)

接下来,我们对对数似然函数求导,并令导数等于零,求解得到的解即为估计值 p ^ \hat{p} p^

Python模拟与绘图

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import minimize_scalar# 定义对数似然函数
def log_likelihood(p, n, k):return np.log(np.math.comb(n, k)) + k * np.log(p) + (n - k) * np.log(1 - p)# 定义负对数似然函数(因为 minimize_scalar 函数寻找最小值)
def neg_log_likelihood(p, n, k):return -log_likelihood(p, n, k)# 模拟抛硬币实验
n_trials = 10  # 抛硬币的总次数
k_heads = 7  # 正面朝上的次数# 最大化对数似然函数来估计正面朝上的概率
result = minimize_scalar(neg_log_likelihood, args=(n_trials, k_heads), bounds=(0, 1), method='bounded')
estimated_p = result.x# 绘制结果
p_values = np.linspace(0, 1, 100)
likelihoods = [np.exp(log_likelihood(p, n_trials, k_heads)) for p in p_values]plt.plot(p_values, likelihoods)
plt.axvline(x=estimated_p, color='r', linestyle='--', label='Estimated p: {:.3f}'.format(estimated_p))
plt.xlabel('p')
plt.ylabel('Likelihood')
plt.title('Likelihood Function')
plt.legend()
plt.show()

在这里插入图片描述

以上代码首先定义了对数似然函数和负对数似然函数,然后利用 minimize_scalar 函数来最大化对数似然函数,并求解得到正面朝上概率 p ^ = 0.7 \hat{p}=0.7 p^=0.7。根据图像可以看出,估计的概率密度函数与观测数据的分布情况较为吻合。

结论

通过本文的介绍,我们了解了极大似然估计的基本理论、推导过程,并通过一个案例演示了如何使用Python实现对极大似然估计的模拟,并绘制出相应的图像进行说明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/721090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习JAVA的第十三天(基础)

目录 API之Arrays 将数组变成字符串 二分查找法查找元素 拷贝数组 填充数组 排序数组 Lambda表达式 集合的进阶 单列集合 体系结构 Collection API之Arrays 操作数组的工具类 将数组变成字符串 //将数组变成字符串char[] arr {a,b,c,d,e};System.out.println(Arra…

Installing Git (安装 Git)

Installing Git [安装 Git] 1. Installing Git1.1. Description1.2. Installing on Linux (在 Linux 上安装)1.3. Installing on macOS (在 macOS 上安装)1.4. Installing on Windows (在 Windows 上安装)1.5. Installing from Source (从源代码安装) 2. sudo apt-get install …

Python常用验证码标注和识别(需求分析和实现思路)

目录 一、需求分析 图像验证码识别: 文本验证码识别: 二、实现思路 三、案例与代码 四、总结与展望 在当今的数字时代,验证码(CAPTCHA)作为一种安全机制,广泛应用于网站和应用程序中,以防…

Method Not Allowed (GET): /user/logout/

在使用 DJango 框架使用框架默认的【登出】视图时&#xff0c;发现报错如下&#xff1a; Method Not Allowed (GET): /user/logout/ Method Not Allowed: /user/logout/ 退出部分的代码原先如下&#xff08;登出部分见第6行&#xff09;&#xff1a; <p><a href"…

PySide6实现socket通信程序

目录 一:实现思路 二:实现代码 三:完整代码和界面 一:实现思路 在PySide6中,服务端可以使用QTcpServer类来实现一个Socket服务器端,这个类可以便捷地创建TCP服务器。在客户端可以使用QTcpSocket实现Socket通信,并使用QTextEdit来显示消息。

MySQL 8.0.35 企业版安装和启用TDE插件keyring_encrypted_file

本文主要记录MySQL企业版TDE插件keyring_encrypted_file的安装和使用。 TDE说明 TDE( Transparent Data Encryption,透明数据加密) 指的是无需修改应用就可以实现数据的加解密&#xff0c;在数据写磁盘的时候加密&#xff0c;读的时候自动解密。加密后其他人即使能够访问数据库…

Unity 摄像机的深度切换与摄像机画面投影

摄像机可选&#xff1a;透视、正交 正交类似投影&#xff0c;1比1 透视类似人眼&#xff0c;近大远小 摄像机投影 在项目中新建&#xff1a;渲染器纹理 将新建纹理拖动到相机的目标纹理中 新建一个平面&#xff0c;将新建材质组件放到平面中即可。 相机深度切换 使用代…

93. 通用防重幂等设计

文章目录 一、防重与幂等的区别二、幂等性的应用场景三、幂等性与防重关系四、处理流程 一、防重与幂等的区别 防重与幂等是在 Web 应用程序和分布式系统中重要而又非常常见的问题。 防重 防重是指在多次提交同样的请求过程中&#xff0c;系统会检测和消除重复的数据&#xf…

每天一个数据分析题(一百八十三)

以下哪一项不是逻辑回归模型的特点&#xff1f; A. 因变量通常为二分类型变量 B. 自变量可以是分类型或连续型变量 C. 适用于处理连续自变量与二分类型因变量之间的关系 D. 通过logit转换&#xff0c;输出结果为实数域内的数值 题目来源于CDA模拟题库 点击此处获取答案

【动态规划】45. 跳跃游戏 II

45. 跳跃游戏 II 解题思路 int[] memo;&#xff1a;定义一个数组memo&#xff0c;用来作为备忘录&#xff0c;存储从每个索引位置跳到数组末尾所需的最小跳跃次数。 Arrays.fill(memo, n);&#xff1a;在开始计算之前&#xff0c;先将memo数组的所有元素初始化为n。这里的n是…

C语言中的宏函数与宏定义

C语言中的宏函数与宏定义 从开始写C语言到生成执行程序的流程大致如下&#xff1a; 预处理工作是系统引用预处理程序对源程序中的预处理部分做处理&#xff0c;而预处理部分是指以“#”开头的、放在函数之外的、一般放在源文件的前面的预处理命令&#xff0c;如&#xff1a;包…

流密码之线性反馈移位寄存器,以习题:n=4的LFSR,输出序列满足ki-4+ki-3+ki=0,初始状态为1000,求最终输出序列 为例

文章重点 关于线性反馈移位寄存器的一些知识点本期就不详细介绍了,本期重点在于讲解习题,以使大家能顺利应对平时作业及期末考试。 习题 习题1如下:n=4的LFSR。输出序列满足ki-4+ki-3+ki=0。 初始状态为1000。求不同时刻的状态及最终输出序列。 分析思路 思路:我们知道…

HTTP有什么缺陷,HTTPS是怎么解决的

缺陷 HTTP是明文的&#xff0c;谁都能看得懂&#xff0c;HTTPS是加了TLS/SSL加密的&#xff0c;这样就不容易被拦截和攻击了。 SSL是TLS的前身&#xff0c;他俩都是加密安全协议。前者大部分浏览器都不支持了&#xff0c;后者现在用的多。 对称加密 通信双方握有加密解密算法…

python自学3

第一节第六章 数据的列表 列表也是支持嵌套的 列表的下标索引 反向也可以 嵌套也可以 列表的常用操作 什么是列表的方法 学习到的第一个方法&#xff0c;index&#xff0c;查询元素在列表中的下标索引值 index查询方法 修改表功能的方法 插入方法 追加元素 单个元素追加 多…

YOLO v9训练自己数据集

原以为RT-DETR可以真的干翻YOLO家族&#xff0c;结果&#xff0c;&#xff01;&#xff01;&#xff01;&#xff01; 究竟能否让卷积神经网络重获新生&#xff1f; 1.数据准备 代码地址&#xff1a;https://github.com/WongKinYiu/yolov9 不能科学上网的评论区留言 数据集…

教育知识与能力保分卷一(中学)

2.在教育学的发展过程中&#xff0c;代表马克思主义的教育学著作是&#xff08;A &#xff09;。 A.凯洛夫的《教育学》 B.赞可夫的《教学与发展》 C.杜威的《民主主义与教育》 D.昆体良的《论演说家的教育》 8.小贺在一次期…

电脑不小心格式化了,怎么恢复?

在这个数字化时代&#xff0c;电脑已经成为我们日常生活和工作中不可或缺的工具。然而&#xff0c;有时我们可能会不小心格式化电脑硬盘&#xff0c;导致重要数据的丢失。那么&#xff0c;电脑不小心格式化了&#xff0c;怎么恢复&#xff1f; 别着急&#xff0c;在本篇攻略中&…

开源模型应用落地-qwen1.5-7b-chat与vllm实现推理加速的正确姿势(八)

一、前言 就在前几天开源社区又发布了qwen1.5版本,它是qwen2模型的测试版本。在本篇学习中,将集成vllm实现模型推理加速,现在,我们赶紧跟上技术发展的脚步,去体验一下新版本模型的推理质量。 二、术语 2.1. vLLM vLLM是一个开源的大模型推理加速框架,通过PagedAttention…

记一次openfeign反序列化异常复盘

前言 之前业务部门有2个通用响应类&#xff0c;一个是负责和前端交互的响应类AjaxResult,一个是负责和后端RPC接口交互的响应类RpcResult。一开始这两个响应类的值字段都一样&#xff0c;形如下 private Boolean success;private String message;private Integer code;private…

掌握PDF全面指南:Python开发者的高效编程技巧

掌握PDF全面指南&#xff1a;Python开发者的高效编程技巧 简介PDF基础知识PDF的结构常见用途PDF在开发中的挑战 PDF处理库介绍PyPDF2ReportLabPDFMiner辅助库 读取和分析PDF文件使用PyPDF2读取PDF文件提取PDF中的文本和元数据分析PDF结构和内容 编辑和修改PDF文件合并多个PDF文…