У меня есть ряд векторов, каждый из которых назван акцией, например FB для Facebook Inc. Таким образом, у меня есть более 70 серий векторов внутри фреймов данных, например, GEEK, IPAS, JCON и т. д. По каждой паре акций скажем, например, GEEK и JCON, я должен рассчитать меру, называемую взаимной информацией. Я написал некоторый код, чтобы найти эту меру для пары акций, и это так.
Чтобы найти entropyz
(энтропия X, Y, скажем, двумерная энтропия GEEK и JCON возвращается)
denz<-kde2d(x,y, n=512, lims=c(xlim,ylim))
z<-denz$z
cell_sizez<-(diff(xlim)/512) * (diff(ylim)/512)
normz<-sum(z)*cell_sizez
integrandz<-z*log(z)
entropyz<-sum(integrandz)*cell_sizez
entropyz<-entropyz/normz
Чтобы найти entropyx
(возвращается энтропия X, скажем, GEEK)
denx<-kde(x=x,gridsize = 512, xmin=xlim[1], xmax = xlim[2])
zx<-denx$estimate
cell_sizex<-(diff(xlim)/512)
normx<-sum(zx)*cell_sizex
integrandx<-zx*log(zx)
entropyx<-sum(integrandx)*cell_sizex
entropyx<-entropyx/normx
Чтобы найти entropyy
(энтропия Y, скажем, возвращает JCON)
deny<-kde(x=y,gridsize = 512, xmin=ylim[1], xmax = ylim[2])
zy<-deny$estimate
cell_sizey<-(diff(ylim)/512)
normy<-sum(zy)*cell_sizey
integrandy<-zy*log(zy)
entropyy<-sum(integrandy)*cell_sizey
entropyy<-entropyy/normy
Наконец, чтобы найти общую информацию GEEK и JCON
MI <- entropyx+entropyy-entropyz
Итак, я нашел взаимную информацию для X и Y (две акции выше). Но я должен рассчитать эту меру для более чем 70 акций (векторов) с 70 * 69/2 итераций = 2415; Это похоже на создание корреляционной матрицы, потому что это попарное сравнение. Вопрос в том, знает ли кто-нибудь способ заставить R найти эту общую информацию для всех пар (x,y
) в моем наборе данных. Другими словами, повторять этот код для каждой пары в кадре данных, создавая таким образом парную матрицу.
Большое спасибо!
combn
. - person lmo   schedule 25.05.2016xlim
иylim
и различаются ли они для каждой пары или нет. - person jamieRowen   schedule 25.05.2016