Hi,
I am trying to work with the output of the MINE analysis routine found at
http://www.exploredata.net
Specifically, I am trying to read the results into a matrix (ideally an
n x n x 6 matrix, but I'll settle right now for getting one column into
a matrix.)
The problem I have is not knowing how to take what amounts to being one
half of a symmetric matrix - excluding the diagonal - and getting it
into a matrix. I have tried using "lower.tri" as found here
https://stat.ethz.ch/pipermail/r-help/2008-September/174516.html
but it appears to only partially fill in the matrix. My code and an
example of the output is below. Can anyone point me to an example that
shows how to create a matrix with this sort of input?
Thank you in advance,
Matt
require(PortfolioAnalytics)
#load market index data
data(indexes)
#save data as a CSV
write.table(indexes, "C:/Rwork/indexes.csv", sep=",",
col.names=TRUE,
row.names=FALSE, quote=FALSE, na="NA")
#assumes rJava is installed, MINE.r and MINE.jar are in the working
directory
#read in MINE.r
source.with.encoding('C:/Rwork/MINE.r', encoding='UTF-8')
#run MINE on indexes
MINE("C:/Rwork/indexes.csv","all.pairs")
#read the output file of MINE analysis
x=read.csv("C:/Rwork/indexes.csv,B=n^0.6,k=15,Results.csv",header=TRUE)
#isolate one half of matrix
newx<-x[,1:3]
newx
X.var Y.var MIC..strength.
1 US.Equities Int.l.Equities 0.33740
2 US.Bonds US.Tbill 0.26657
3 US.Tbill Inflation 0.23388
4 Commodities Inflation 0.23122
5 Commodities US.Tbill 0.21476
6 US.Equities US.Tbill 0.20829
7 US.Bonds Inflation 0.20486
8 Int.l.Equities Commodities 0.19439
9 US.Bonds Commodities 0.19237
10 US.Equities Commodities 0.18633
11 US.Bonds US.Equities 0.17298
12 US.Equities Inflation 0.17174
13 Int.l.Equities US.Tbill 0.16822
14 US.Bonds Int.l.Equities 0.16480
15 Int.l.Equities Inflation 0.15027
#v<-newx[,3]
#or, for the sake of this example
v<-c(0.33740, 0.26657, 0.23388, 0.23122, 0.21476, 0.20829, 0.20486,
0.19439, 0.19237,
0.18633, 0.17298, 0.17174, 0.16822, 0.16480, 0.15027)
z<-diag(6)
ind <- lower.tri(z)
z[ind] <- t(v)[ind]
z
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1.00000 0.00000 0 0 0 0
[2,] 0.26657 1.00000 0 0 0 0
[3,] 0.23388 0.19237 1 0 0 0
[4,] 0.23122 0.18633 NA 1 0 0
[5,] 0.21476 0.17298 NA NA 1 0
[6,] 0.20829 0.17174 NA NA NA 1
[[alternative HTML version deleted]]