You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于矩阵计算产品出口条件概率的R语言实现求助

计算产品间出口的条件概率

首先重现你的矩阵生成代码(保证结果可复现):

set.seed(2022) 
mat <- matrix(sample(0:1, 25, replace = T), ncol = 5)
rownames(mat) <- c("R1", "R2", "R3", "R4", "R5")
colnames(mat) <- c("A", "B", "C", "D", "E")

接下来分三步实现条件概率计算:

1. 统计每个产品的出口区域数

用colSums()直接统计每列(对应单个产品)中1的个数,也就是出口该产品的区域数量:

# 每个产品的出口区域数
export_counts <- colSums(mat)

对应你示例中的数据,export_counts["A"]为2,export_counts["B"]为4,和你描述的完全一致。

2. 统计同时出口任意两种产品的区域数

通过矩阵交叉乘积t(mat) %*% mat生成对称矩阵,其中[i,j]位置的数值代表同时出口产品i和产品j的区域数量:

# 同时出口两种产品的区域数矩阵
joint_export <- t(mat) %*% mat

比如joint_export["A","B"]的值为1,正好对应你说的仅R1同时出口A和B的情况。

3. 计算条件概率矩阵

根据公式P(X|Y) = 同时出口X和Y的区域数 / 出口Y的区域数,将joint_export的每一列除以对应产品的出口区域数即可得到结果:

# 生成条件概率矩阵:行是X,列是Y,对应P(X|Y)
cond_prob <- joint_export / export_counts

# 处理分母为0的情况(若某产品无出口区域,标记为NA避免报错)
cond_prob <- ifelse(export_counts == 0, NA, cond_prob)

查看最终结果:

cond_prob

对应你示例中的关键值:

  • cond_prob["A","B"]为0.25(即1/4),代表出口B时出口A的概率
  • cond_prob["B","A"]为0.5(即1/2),代表出口A时出口B的概率

如果需要将结果以分数形式展示,可以使用MASS包的fractions()函数:

library(MASS)
fractions(cond_prob)

内容的提问来源于stack exchange,提问作者Manfred L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 16:45:42