Full_Name: Claus Pastor
Version: 2.9.2
OS: Windows XP
Submission from: (NULL) (82.113.106.4)
I use the following function to compute MutualInformation Matrix of factorial
members of a dataframe. I use package minet for this:
my.MI = function(test) {
## die Diagonale gibt die Entropien, Teile durch entropy von y und du erh?lst
den Zusammenhang
## kenne X und sage daraus y voraus
require(minet)
MI.matrix =
matrix(0,nrow=length(test),ncol=length(test),dimnames=list(names(test),names(test)))
for (i in 1:length(test)) {
for (j in 1:length(test)) {
temp = na.omit(test[,c(i,j)])
MI = build.mim(temp)
p.i = prop.table(table(temp[,1]))
p.j = prop.table(table(temp[,2]))
H.i = sum(-p.i*log(p.i))
H.j = sum(-p.j*log(p.j))
MI.matrix[i,j] = MI[1,2]/H.j
MI.matrix[j,i] = MI[1,2]/H.i
}
}
return(MI.matrix)
}
The function works well under R 2.8.
Under R2.9.2 it produces Mutual Information values (MI) of more than 1 (e.g.
1.000013) which are not allowed. MI is in [0:1]. I suppose there are rounding
errors anywhere in the new R 2.9.2.
On 29/08/2009 3:35 AM, claus.henry at gmx.de wrote:> Full_Name: Claus Pastor > Version: 2.9.2 > OS: Windows XP > Submission from: (NULL) (82.113.106.4) > > > I use the following function to compute MutualInformation Matrix of factorial > members of a dataframe. I use package minet for this: > > my.MI = function(test) { > ## die Diagonale gibt die Entropien, Teile durch entropy von y und du erh?lst > den Zusammenhang > ## kenne X und sage daraus y voraus > require(minet) > MI.matrix = matrix(0,nrow=length(test),ncol=length(test),dimnames=list(names(test),names(test))) > for (i in 1:length(test)) { > for (j in 1:length(test)) { > temp = na.omit(test[,c(i,j)]) > MI = build.mim(temp) > p.i = prop.table(table(temp[,1])) > p.j = prop.table(table(temp[,2])) > H.i = sum(-p.i*log(p.i)) > H.j = sum(-p.j*log(p.j)) > MI.matrix[i,j] = MI[1,2]/H.j > MI.matrix[j,i] = MI[1,2]/H.i > } > } > return(MI.matrix) > } > > > The function works well under R 2.8. > > Under R2.9.2 it produces Mutual Information values (MI) of more than 1 (e.g. > 1.000013) which are not allowed. MI is in [0:1]. I suppose there are rounding > errors anywhere in the new R 2.9.2.This is not a useful bug report: you don't give the data that leads to the different values. You should put together an example and work with the maintainer of the minet package to see if it's a bug in that package. If it's not, then you should be able to put together an example that only involves the base R packages. Duncan Murdoch
> -----Original Message----- > From: r-devel-bounces at r-project.org > [mailto:r-devel-bounces at r-project.org] On Behalf Of claus.henry at gmx.de > Sent: Saturday, August 29, 2009 12:35 AM > To: r-devel at stat.math.ethz.ch > Cc: R-bugs at r-project.org > Subject: [Rd] round off errors? (PR#13918) > > Full_Name: Claus Pastor > Version: 2.9.2 > OS: Windows XP > Submission from: (NULL) (82.113.106.4) > > > I use the following function to compute MutualInformation > Matrix of factorial > members of a dataframe. I use package minet for this: > > my.MI = function(test) { > ## die Diagonale gibt die Entropien, Teile durch entropy von > y und du erh?lst > den Zusammenhang > ## kenne X und sage daraus y voraus > require(minet) > MI.matrix = > matrix(0,nrow=length(test),ncol=length(test),dimnames=list(nam > es(test),names(test))) > for (i in 1:length(test)) { > for (j in 1:length(test)) { > temp = na.omit(test[,c(i,j)]) > MI = build.mim(temp) > p.i = prop.table(table(temp[,1])) > p.j = prop.table(table(temp[,2])) > H.i = sum(-p.i*log(p.i)) > H.j = sum(-p.j*log(p.j)) > MI.matrix[i,j] = MI[1,2]/H.j > MI.matrix[j,i] = MI[1,2]/H.i > } > } > return(MI.matrix) > } > > > The function works well under R 2.8. > > Under R2.9.2 it produces Mutual Information values (MI) of > more than 1 (e.g. > 1.000013) which are not allowed. MI is in [0:1]. I suppose > there are rounding > errors anywhere in the new R 2.9.2.With the argument test = data.frame(x = gl(2, 3), y = gl(3, 2)) minet version 2.0.0 (Date: 2009-08-19) returns diagonals more than 1 and minet version 1.6.0 (Date: 2007) returns diagonals of 1. This happens in both R 2.9.1 and 2.9.2. I would suspect changes in minet rather than R are the problem. Mail to the Maintainer listed in packageDescription("minet"). Bill Dunlap TIBCO Software Inc - Spotfire Division wdunlap tibco.com> > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >