Mutual Information larger than smaller one of both entropies? Lot's of questions and good answers on mutual information e.g. here out there and I think I get the concept which is also nicely explained on wikipedia. But I'm nervous that R's infotheo package is outputting some funny results... or I'm not getting it after all ;-)
In all self contained examples with synthetic data sets I tried I could not provoke this behaviour so I will not be able to provide a fully self contained example but after running
MI.matrix <- mutinformation(df)

I am getting the following results:
> MI.matrix[1,1]
[1] 0.4276829

So the entropy of the 1st variable (lets call it X) is ~0.43
> MI.matrix[440,440]
[1] 0.24493

So the entropy of the 440th variable (lets call it Y) is ~0.24
> MI.matrix[1,440]
[1] 0.4276829

So I(X;Y)=H(X) with H(X)>H(Y)?! If you refer to the image on the wiki article, how can the shared portion be larger than the smaller one of the entropies?
Note: I have also seen examples where H(X)=0, H(Y)=y and I(X;Y)=y where to my understanding I(X;Y) should be 0 as well.
Edit: after some more debugging I found the following:

*

*variable pairs which behave funny are one with lots of NAs

*While infotheo throws no errors with NAs and I could not find a hint in the documentation that NAs are not allowed I get a very different and correct result when removing NAs.

Below you can see a table with three variables, one version with all NAs included (df.temp) which has 1282 cases and one with complete cases only (df.temp.completecases) which is down to 15 cases.

Computing the MI matrix for both of them yields the following:

So now the I(X;Y) values seem to make more sense but the H(X) values along the diagonal obviously suffer from kicking out all X rows where Y is NA. I think I'll end up having to to compute the whole thing twice: once the entropies on individual columns and a 2nd run on pairwise complete columns to get the correct mutual information.
Guess my question has changed to: anyone's got an idea how to efficiently limit the pairwise MI computations to complete cases for a given pair only? Something similar to use=pairwisecomplete.obs in the cor function.

You are correct, mutual information between X and Y cannot be larger than either the entropy of X or the entropy of Y. Ever. To debug where you've gone astray: instead of passing in a 2D matrix, try passing in pairs of vectors as separate X and Y arguments, and see if you can make sense of the results you get that way. Also pay attention to the method argument; empirical entropy estimates can be very biased unless you have a huge dataset; but it looks like corrections for this are supported.
