网格方法是2011发表在《Science》上的一篇文章《Detecting Novel Associations in Large Data Sets》中提出的。这篇文章的英文版,论坛上曾经有人上传过。
https://bbs.pinggu.org/thread-2715793-1-1.html在这篇帖子的回复中有其压缩包。
以下内容是本人安装rJava程序和计算MIC值的过程,以及遇到的一些问题与我的解决方法(我的电脑是64位的,R软件安装的是最新版本的)。如果你们在此过程中遇到其它问题,也可以去炼数成金网站看看,里面有一些可供借鉴的帖子。
1.因为我的电脑环境,所以我安装的是JDK1.764位,下载链接如下:
http://www.uzzf.com/soft/58818.html
2.JDK安装完成后,需要设置相应的系统变量(右击“计算机”>属性>高级系统设置>环境变量>系统变量框下的新建或者编辑)
(1)变量Java_Home 设置为64位Java安装目录,如我的是:D:\Program Files\Java
(2)变量Path 中加入Java的server文件夹路径和R的64位bin路径,如我的是:
D:\ProgramFiles\Java\jdk1.8.0_20\bin\server\;D:\Program Files\R\R-3.2.2\bin\x64\
(3)R_Home 为R的安装目录,如我的是:D:\Program Files\R
3.在R中安装rJava程序
4.针对WHO.csv数据集中的变量计算MIC,需要把WHO.csv,MINE.jar,MINE.r三个文件放在R的工作目录下(可以通过在R中运行getwd()来得到R的工作目录)。这三个文件我已经放在了下面的压缩包中,压缩包中我还放入另一个数据集Spellman.csv。
5.前期工作已经完成,下面是如何通过R来计算MIC
(1)运行:source(MINE.r)注:我在运行该命令的过程中,得出以下结果:Error in source(MINE.r) : object 'MINE.r' not found
由于我没找到原因,所以我的解决方法是在R的source界面中直接打开MINE.r文件,然后点击source界面的运行按钮来
运行MINE.r文件中的语句
(2)运行:MINE("WHO.csv","all.pairs") #对WHO数据集中的所有变量计算MIC
注1:我在运行该命令后结果如下:
Error in.jnew("main/JobParameters", args) : java.lang.NullPointerException
据说是由于R和JAVA的版本问题造成的。我的解决方法是在后面加上两个参数0,0,即运行:MINE("WHO.csv","all.pairs",0,0) 即可,运行结果在R的工作目录下
查看,会有一个CSV格式的文件
注2:all pairs的命令在数据集的数据量很大的情况下会对电脑的运行内存有一定要求,所以请注意!
最终的运行结果如下:
- WHO.csv,allpairs,cv=0.0,B=n^0.6,Results.csv
- WHO.csv,allpairs,cv=0.0,B=n^0.6,Status.txt
(3)运行:MINE("WHO.csv","master.variable",4,0) #计算第4列和其它列的MIC值,其中参数0的作用同上
运行结果为:
- WHO.csv,mv=4,cv=0.0,B=n^0.6,Status.txt
- WHO.csv,mv=4,cv=0.0,B=n^0.6,Results.csv