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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值