[R] strange behavior of cor() with pairwise.complete.obs
Hilmar Berger
hilmar.berger at imise.uni-leipzig.de
Wed Jan 2 18:39:07 CET 2008
Hi all,
I'm not quite sure if this is a feature or a bug or if I just fail to understand
the documentation:
If I use cor() with pairwise.complete.obs and method=pearson, the result is a
scalar:
->cor(c(1,2,3),c(3,4,6),use="pairwise.complete.obs",method="pearson")
[1] 0.9819805
The documentation says that
" '"pairwise.complete.obs"' only works with the '"pearson"' method
for 'cov' and 'var'."
Thus, I guess that cor() should work for pairwise.complete.obs and method =
"kendall", or am I misinterpreting that statement ?
-> c(1,2,3),c(3,4,6),use="pairwise.complete.obs",method="kendall")
[,1]
[1,] 1
Now the result is a matrix with dimensions (1,1) - strange enough.
Note that when I use "all.obs" or "complete.obs" I get a scalar for method
kendall, too.
It gets worse if one tries to calculate the correlation between the columns of
two matrices (i.e. cor(x,y) with x and y being a matrix). Then
-> c=matrix(c(1,2,3,3,4,5),nrow=3,ncol=2)
-> d=matrix(c(2,3,4,NA,NA,NA),nrow=3,ncol=2)
-> cor(c,d,use="pairwise.complete.obs",method="pearson")
[,1] [,2]
[1,] 1 NA
[2,] 1 NA
-> cor(c,d,use="pairwise.complete.obs",method="kendall")
Error: 'x' is empty (*translated from german error message*)
The behavior is reproducible in R 2.4.1 and 2.6.1 (WinXP). I noticed that in
2.7.0 something was fixed in cor() related to "complete.obs" handling - would
that fix my problems ?
Any suggestions ?
Thanks,
Hilmar
More information about the R-help
mailing list