R中的互信息循环

发布于 2025-01-16 01:52:02 字数 810 浏览 0 评论 0原文

我在 R 中有一个包含零和一的表,如下

m <- 10
n <- 5
dat <- round(matrix(runif(m * n), m, n))

所示:

      [,1] [,2] [,3] [,4] [,5]
 [1,]    0    1    1    1    0
 [2,]    1    0    1    1    0
 [3,]    0    1    1    1    0
 [4,]    1    1    1    1    0
 [5,]    1    0    1    0    0
 [6,]    0    1    1    0    0
 [7,]    1    0    1    1    0
 [8,]    1    0    1    0    0
 [9,]    1    0    0    0    0
[10,]    0    1    0    0    1

如果我想使用 R 中的 infotheo 包的 condinformation 函数查找条件互信息 在前两列与所有其他条件作为条件之间,我将这样做

library(infotheo)
condinformation(dat[,1], dat[,2], S=dat[,c(-1,-2)], method="emp")

如何创建一个包含所有条件互信息的 5x5 矩阵?含义是使用类似 condinformation(dat[,a], dat[,b], S=dat[,c(-a,-b)], method="emp") 的公式一个循环?

I have a table with zero and ones in R like this

m <- 10
n <- 5
dat <- round(matrix(runif(m * n), m, n))

resulting in:

      [,1] [,2] [,3] [,4] [,5]
 [1,]    0    1    1    1    0
 [2,]    1    0    1    1    0
 [3,]    0    1    1    1    0
 [4,]    1    1    1    1    0
 [5,]    1    0    1    0    0
 [6,]    0    1    1    0    0
 [7,]    1    0    1    1    0
 [8,]    1    0    1    0    0
 [9,]    1    0    0    0    0
[10,]    0    1    0    0    1

If i want to find the conditional mutual information with the condinformation function of infotheo package in R between the first two columns with all other as conditionals, i will do this

library(infotheo)
condinformation(dat[,1], dat[,2], S=dat[,c(-1,-2)], method="emp")

How can i create a 5x5 matrix containing all the conditional mutual informations? Meaning to use a formula like that condinformation(dat[,a], dat[,b], S=dat[,c(-a,-b)], method="emp") in a loop?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

折戟 2025-01-23 01:52:02
a = combn(seq(ncol(dat)), 2, function(x)condinformation(dat[, x[1]], dat[,x[2]], S=dat[,-x], method = 'emp'))
structure(a, Size = ncol(dat), class = 'dist')
           1          2          3          4
2 -1.3862944                                 
3 -1.0819778 -1.1273805                      
4 -0.9433484 -0.9887511 -1.2136851           
5 -1.0227309 -1.0479980 -1.1343026 -1.1935496
a = combn(seq(ncol(dat)), 2, function(x)condinformation(dat[, x[1]], dat[,x[2]], S=dat[,-x], method = 'emp'))
structure(a, Size = ncol(dat), class = 'dist')
           1          2          3          4
2 -1.3862944                                 
3 -1.0819778 -1.1273805                      
4 -0.9433484 -0.9887511 -1.2136851           
5 -1.0227309 -1.0479980 -1.1343026 -1.1935496
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文