互信息(Mutual Information,MI)的原理和计算

news2024/9/22 7:30:48

互信息(Mutual Information,MI)是信息论中的一个度量,用于量化两个随机变量之间的依赖关系。互信息度量了一个随机变量包含了关于另一个随机变量的信息量。它可以用来识别和量化两个信号之间的非线性相关性。互信息可以揭示两个信号共享的信息量,是信息论中的一个重要概念。

互信息的定义

在这里插入图片描述

直观解释

在这里插入图片描述

计算互信息的意义

在这里插入图片描述

示例

以下是一个计算互信息的示例,假设我们有两个离散化的信号
X 和 Y:

import numpy as np

def compute_probabilities(digitized_signal, bins):
    prob = np.zeros(bins)
    for bin_index in digitized_signal:
        prob[bin_index - 1] += 1
    prob /= len(digitized_signal)
    return prob

def compute_joint_probabilities(X_dig, Y_dig, bins):
    joint_prob = np.zeros((bins, bins))
    for x_bin, y_bin in zip(X_dig, Y_dig):
        joint_prob[x_bin - 1, y_bin - 1] += 1
    joint_prob /= len(X_dig)
    return joint_prob

def mutual_information(P_X, P_Y, P_XY):
    mi = 0
    for x in range(len(P_X)):
        for y in range(len(P_Y)):
            if P_XY[x, y] > 0:  # 忽略 P_XY(x,y) 为 0 的情况以避免 log(0)
                mi += P_XY[x, y] * np.log(P_XY[x, y] / (P_X[x] * P_Y[y]))
    return mi

# 生成示例数据
np.random.seed(42)
X = np.sin(np.linspace(0, 10 * np.pi, 1000)) + np.random.normal(0, 0.1, 1000)
Y = np.sin(np.linspace(0, 10 * np.pi, 1000) + np.pi / 4) + np.random.normal(0, 0.1, 1000)

# 离散化信号
def discretize_signal(signal, bins):
    min_val, max_val = np.min(signal), np.max(signal)
    bin_edges = np.linspace(min_val, max_val, bins + 1)
    digitized = np.digitize(signal, bin_edges[:-1])
    return digitized

bins = 20
X_binned = discretize_signal(X, bins)
Y_binned = discretize_signal(Y, bins)

# 计算边缘概率分布和联合概率分布
P_X = compute_probabilities(X_binned, bins)
P_Y = compute_probabilities(Y_binned, bins)
P_XY = compute_joint_probabilities(X_binned, Y_binned, bins)

# 计算互信息
mi = mutual_information(P_X, P_Y, P_XY)
print(f'互信息: {mi:.4f}')

解释

在这里插入图片描述
通过互信息,可以定量地评估两个信号之间的信息共享和依赖关系,这对于分析复杂系统中的变量关系非常有用。

注释1:

互信息(Mutual Information, MI)在脑电信号分析中的作用主要体现在以下几个方面:
在这里插入图片描述
互信息值越高,表示两个信号之间共享的信息量越大,即它们之间的依赖关系越强。互信息可以捕捉到线性和非线性依赖关系,是分析脑电信号之间关系的重要工具。

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

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

相关文章

Web开发:一个可拖拽的模态框(HTML、CSS、JavaScript)

目录 一、需求描述 二、实现效果 三、完整代码 四、实现过程 1、HTML 页面结构 2、CSS 元素样式 3、JavaScript动态控制 (1)获取元素 (2)显示\隐藏遮罩层与模态框 (3)实现模态框拖动效果 一、需求…

【离线查询 堆 优先队列】1383. 最大的团队表现值

本文涉及知识点 离线查询 堆 优先队列 算法与数据结构汇总 LeetCode1383. 最大的团队表现值 给定两个整数 n 和 k,以及两个长度为 n 的整数数组 speed 和 efficiency。现有 n 名工程师,编号从 1 到 n。其中 speed[i] 和 efficiency[i] 分别代表第 i 位…

开源项目的认识理解

目录 开源项目有哪些机遇与挑战? 1.开源项目的发展趋势 2.开源的经验分享(向大佬请教与上网查询) 3.开源项目的挑战 开源项目有哪些机遇与挑战? 1.开源项目的发展趋势 1. 持续增长与普及 - 开源项目将继续增长&#xff0c…

软件测试——AI快速入门

工作职责: 1.负责产品系统测试,包括功能测试、性能测试、稳定性测试、用户场景测试、可靠性测试等。 2.负责测试相关文档的编写,包括测试计划、测试用例、测试报告等。 3.负责自动化测试框架、用例的维护。 岗位要求: 1.熟练…

编程范式之并发编程

目录 前言1. 并发编程的定义2. 并发编程的特点2.1 任务交替执行2.2 状态共享与同步2.3 并行执行 3. 并发编程的适用场景3.1 高性能计算3.2 I/O 密集型应用3.3 实时系统 4. 并发编程的优点4.1 提高资源利用率4.2 缩短响应时间4.3 提高系统吞吐量 5. 并发编程的缺点5.1 编程复杂性…

MP4怎么转为MP3?超多人都在用的四种转换方法!

MP4怎么转为MP3?MP4,这一风靡全球的多媒体容器格式,无疑是数字时代的一枚璀璨明珠,深深烙印在每个人的数字生活之中,那么,它究竟是如何在众多格式中脱颖而出,赢得如此广泛认可的呢?首…

【Redis】初识 Redis

文章目录 1 什么是 Redis2 Redis 的特点2.1 速度快2.2 可编程性2.3 可拓展性2.4 持久化2.5 主从复制2.5 高可用和分布式2.6 客户端语言多 3 Redis 使用场景3.1 实时数据存储3.2 缓存和 Session 存储3.3 消息队列 4 Redis 重大版本5 CentOS7 安装 Redis5 1 什么是 Redis Redis …

【typedb】例子:药物发现 1: 模式导入

typedb-examples/drug-discovery/ Drug discovery监听0.0.0.0:1729 但这么连接肯定不行: localhost:1729 可以: 一直无法点击schema图标:先创建一个数据库 选中数据库: 选中后就可以了:

分布式存储快速入门HDFS

分布式存储快速入门 文章目录 分布式存储快速入门一、概要介绍1.1 什么是分布式存储1.2 分布式存储的重要性和应用场景 二、HDFS基础2.1 HDFS的起源和发展2.2 HDFS的架构2.3 HDFS的基本概念2.4 HDFS的特性2.5 HDFS的版权 三、HDFS安装与配置3.1 环境准备3.2 安装Hadoop和配置HD…

你也想做一个Element-ui吧!!!——Blueの前端路(一)

目录 前言: 父子组件 button组件 使用vue脚手架初始化一个项目 如何封装,注册和使用一个组件 main.js中将组件设置为全局 使用 此组件我们所需实现的内容 type 父组件组件传递type属性 子组件接收负组件传递的数据 通过绑定类名的方法动态控制…

python如何结束程序运行

方法1:采用sys.exit(0),正常终止程序,从图中可以看到,程序终止后shell运行不受影响。 方法2:采用os._exit(0)关闭整个shell,从图中看到,调用sys._exit(0)后整个shell都重启了(RESTAR…

关键路径-matlab

路径上边的数目称为路径长度 图的基本知识 求最短路径(Dijkstra算法) 2. 待继续尝试 ①Dijkstra ②floyd_all.m 一 二 ③ LeetCode [329. 矩阵中的最长递增路径]

OpenCV solvePnP位姿估计

目录 一、概述 二、实现代码 2.1solvePnP函数 2.1.1输入参数 2.1.2输出参数 2.2完整代码 三、实现效果 3.1标定板位姿 3.2标定板到相机的变换矩阵 一、概述 完成相机标定后,可以通过检测标定板在图像中的位置来计算标定板在相机坐标系下的位姿(…

Python基础知识——(004)

文章目录 P16——15. 布尔类型 P17——16. 类型转换函数 P18——17. eval函数 P19——18. 算数运算符 P20——19. 赋值运算符 P16——15. 布尔类型 布尔类型 用来表示 “真” 值或 “假” 值的数据类型在Python中使用标识符 True 或 False 表示布尔类型的值True表示整数1&…

python的集合

定义 集合(是一个无序的、不包含重复元素的集合。集合对象支持数学上的标准集合操作,如并集、交集、差集等。) 创建集合 添加元素 删除元素 遍历 其他 union() 或 |:返回两个集合的 并集intersection() 或 &:返回…

关于共享盘(文件夹)

1、创建共享文件夹或共享盘 对应文件或盘-》右键-》属性-》共享或高级共享 2、设置权限来针对不同的用户进行访问 2.1 关于用户的添加 电脑->计算机管理->添加用户和组 2.2 本地用户 在属性的安全之中,可针对不同的用户和组进行权限设置,例如某…

MYSQL--第七次作业

MYSQL–第七次作业 在product表上创建三个触发器。每次激活触发器后,都会更新operate表。product表和表的内容如下 Product表内容 字段名 字段描述 数据类型 主键 外键 非空 唯一 自增 Id 产品编号 Int(10) 是 否 是 是 否 Name …

iPad锁屏密码忘记怎么办?有什么方法可以解锁?

当我们在日常使用iPad时,偶尔可能会遇到忘记锁屏密码的尴尬情况。这时,不必过于担心,因为有多种方法可以帮助您解锁iPad。接下来,小编将为您详细介绍这些解决方案。 一、使用iCloud的“查找我的iPhone”功能 如果你曾经启用了“查…

Nginx:关于实现跨域代理

运维专题 Nginx:关于实现跨域代理 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.ne…

openWrt(3) - ubus (下)

参考自: [OpenWrt Wiki] ubus(OpenWrt微总线架构) --- [OpenWrt Wiki] ubus (OpenWrt micro bus architecture) ubus补充 查看注册到 ubusd 的所有服务的所有方法: ubus -v list system 调用远程方法并接收回复。回复可以是简单的整数返回…