Данные биннинга для использования в матрице и изображении () или тепловой карте () - PullRequest
3 голосов
/ 29 августа 2011

У меня есть фрейм данных с тремя столбцами, и я хотел бы сделать изображение / тепловую карту данных.

Три столбца: pe, vix и ret, где pe и vix - x и y, а ret - z.

В кадре данных содержится 220 строк, поэтому я хотел бы объединить данные, если это возможно, диапазоны ниже.

Любые предложения о том, как связать данные x и y, а также создать матрицу для использования в изображении ()?

> range(matr$pe)
[1] 13.32 44.20
> range(matr$vix)
[1] 10.42 59.89
> range(matr$ret)
[1] -0.09274936  0.04693118
> class(matr)
[1] "data.frame"
> head(matr)
     pe   vix          ret
1 20.86 13.16 -0.002931561
2 20.46 12.53 -0.003546889
3 20.52 12.42  0.006339165
4 20.61 13.47  0.009683174
5 20.57 11.26 -0.002666668
6 20.81 11.73  0.002895003

Ответы [ 3 ]

3 голосов
/ 01 сентября 2011

Вот что я в итоге сделал.Я использовал функцию interp () в пакете akima, чтобы создать соответствующий матричный объект.Похоже, что он выполняет работу по бинингу и «матрицизации» фрейма данных.В дополнение к этому, чтобы сделать тепловую карту с легендой, я использовал метод image.plot () из пакета fields .Вот код:

par(bg = 3)
image.plot(s,xlab="P/E Ratio", ylab="VIX", 
    main="Contour Map of SPY Returns vs P/E Ratio and Vix") 
abline(v=(seq(0,100,5)), col=6, lty="dotted") 
abline(h=(seq(0,100,5)), col=6, lty="dotted") 
contour(s, add=TRUE)

и полученный продукт для всех, кто заинтересован: enter image description here

Спасибо всем за помощь и предложения.

1 голос
/ 30 августа 2011

вы должны пройти через растровый пакет.В частности, функция rasterfromXYZ () должна делать большую часть того, что вы хотите.С помощью базовых графических инструментов или растрового пакета довольно просто настроить цветовой диапазон «тепловой карты» для растрового объекта.

1 голос
/ 29 августа 2011

Вы можете использовать, например, cut, например:

matr$binnedpe<-cut(matr$pe, breaks=10)
matr$binnedvix<-cut(matr$vix, breaks=10)

Далее вы можете использовать, например, ddply (из пакета plyr), чтобы получить средства на корзину:

binneddata<-ddply(matr, .(binnedpe, binnedvix), function(d){c(d$binnendpe, d$binnedvix, mean(d$ret))})

Наконец, вы используете этот последний data.frame для построения вашей тепловой карты.Я не проверял ничего из вышеперечисленного, но оно должно быть достаточно близко, чтобы вы могли начать работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...