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

如何基于数据集表格在R中构建联合分布P[x,y]矩阵

R语言构建双变量联合分布P[x,y]矩阵操作方案

基础实现(针对离散变量x/y)

假设你的原始数据为包含x、y两列的data.frame,共100行观测值,直接用基础R函数即可完成计算:

  1. 先统计x和y各取值组合的频次
# 此处为模拟测试数据,替换为你自己的数据集即可
set.seed(123)
df <- data.frame(
  x = sample(c(1,2,3), 100, replace = TRUE),
  y = sample(c(0,1), 100, replace = TRUE)
)
# 生成交叉频次表
freq_table <- table(df$x, df$y)
  1. 转换为联合概率矩阵
    频次表除以总观测数即可得到每个单元格对应的P(x,y)值:
# 方法1:直接除以总样本量
joint_p <- freq_table / nrow(df)
# 方法2:用prop.table函数直接计算比例,结果和方法1完全一致
joint_p <- prop.table(freq_table)

# 验证:所有单元格概率之和应为1(浮点误差可忽略)
sum(joint_p)

连续变量x/y的前置处理

如果x或y为连续型变量,需要先做离散化分箱再执行上述步骤,分箱可通过cut()函数实现:

# 示例:将连续x分为4个等宽区间,连续y分为3个等宽区间
df$x_bin <- cut(df$x, breaks = 4)
df$y_bin <- cut(df$y, breaks = 3)

# 基于分箱后的数据计算联合分布
freq_table_cont <- table(df$x_bin, df$y_bin)
joint_p_cont <- prop.table(freq_table_cont)

输出结果说明

最终得到的joint_p就是你需要的联合分布矩阵,行对应x的所有取值,列对应y的所有取值,矩阵中每个位置的数值就是对应x、y取值组合的联合概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:48:03