基于二分类事件数据集生成事件关联矩阵或热图
计算二元事件共现矩阵并绘制热图
1. 计算共现次数矩阵
对于仅含0/1的二元事件数据集,两两事件的共现次数可以通过矩阵转置与原矩阵相乘直接计算,结果矩阵的(i,j)位置即为eventi和eventj同时为1的记录数,对角线为单个事件的发生次数:
# 加载数据集 df <- data.frame(event1 = c(1, 0, 0, 1, 0, 0, 1), event2 = c(1, 1, 0, 1, 0, 0, 1), event3 = c(1, 0, 0, 0, 0, 0, 0)) # 计算共现矩阵 co_occur_matrix <- t(df) %*% df print(co_occur_matrix)
运行结果:
event1 event2 event3 event1 3 3 1 event2 3 4 1 event3 1 1 1
完全匹配你提到的统计结果:event1与event2共现3次,event2与event3共现1次。
2. 绘制共现热图
方法1:基础R热图函数
用R内置的heatmap()快速生成热图:
heatmap(co_occur_matrix, main = "事件共现次数热图", xlab = "事件", ylab = "事件", col = heat.colors(10)) # 自定义配色
方法2:用pheatmap包生成美观热图(推荐)
pheatmap支持显示单元格数值、自定义配色等功能,先安装并加载包:
install.packages("pheatmap") library(pheatmap)
绘制带数值标注的热图:
pheatmap(co_occur_matrix, main = "事件共现次数热图", display_numbers = TRUE, # 显示共现次数数值 color = viridis::viridis(10), # 用viridis配色(需先安装viridis包) border_color = "white")
如果没有viridis包,可替换为自定义渐变配色,比如colorRampPalette(c("#f7fbff", "#08306b"))(10)。
内容的提问来源于stack exchange,提问作者user19611357
相关产品推荐
相关产品推荐

