0

Rには、1つの独立変数と9つの従属変数を持つデータセットがあり、散布図、ヒストグラム、および相関値chart.Correlation()を表示したいのですが、従属変数間の相関は見たくありません... asそれは不要です。

つまり、次のモック例では、すべてのヒストグラム、すべての赤い線、重要な星などを含む、一番上の行と一番左の列だけを気に/見たいと思っていますが、気にしない/気にしません他のすべての散布図と相関値が必要です。これは可能ですか/これらすべてを1つの視覚化で見るためのきちんとした方法はありますか...つまり、独立変数とすべての従属変数...?

モックの例:

d <- xts(matrix(rnorm(10000),ncol=10), Sys.Date()-1000:1)
library(PerformanceAnalytics)
chart.Correlation(d)

chart.Correlation余談ですが...フォントサイズが判読不能にならないように最小および最大フォントサイズを設定する方法から生成されたいくつかの相関値のフォントサイズに少し悩まされています.. .

また、問題の解決策を見つけるのに役立つと思われる他のパッケージ (ggplot2 など) を自由に使用してください。

前もって感謝します

編集:

ggplotだから、これは私がこれまでに使用して思いついたものplyrです...私はまだ独立変数のヒストグラムがありません...ああ、multiplotここから来ています: http://wiki.stdout.org/rcookbook/Graphs/ Multiple%20graphs%20on%20one%20page%20(ggplot2)/

そして今それを答えとして含めました...しかし、他の提案/改善は好評です....

require(plyr)
require(ggplot2)

indep.dep.cor <- function(xts.obj, title=""){

        # First column always assumed to be independent
        df <- data.frame(coredata(xts.obj))
        assign('df',df,envir=.GlobalEnv)

        df.l <- melt(df, id.vars=colnames(df)[1], measure.vars=colnames(df)[2:ncol(df)])
        assign('df.l',df.l, envir=.GlobalEnv)

        cor.vals <- ddply(df.l, c("variable"), summarise, round(cor(df[,1],value),3))
        stars <- ddply(df.l, c("variable"), summarise, symnum(cor.test(df[,1],value)$p.value, corr = FALSE, na = FALSE, cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " ")))
        cor.vals$stars <- stars[,2]
        assign('cor.vals',cor.vals,envir=.GlobalEnv)

        bin.w <- min((ddply(df.l,c("variable"),summarise,diff(range(value))/30))[,2])

        m1 <- ggplot(df.l,aes_string(x="value"))+
            facet_grid(.~variable)+
            stat_density(aes(y=..density..),fill=NA, colour="red", size=1.2)+
            geom_histogram(aes(y=..density..),fill="white", colour="black", binwidth=bin.w)+
            opts(title=title)

        m2 <- ggplot(df.l,aes_string(x=colnames(df.l)[1], y="value"))+
            facet_grid(.~variable)+geom_point(aes(alpha=0.2))+
            opts(legend.position="none")+
            geom_text(data=cor.vals,aes(label=paste(cor.vals[,2],cor.vals[,3]),size=abs(cor.vals[,2])*2,colour=cor.vals[,2]),x=Inf,y=Inf,vjust=1,hjust=1,show_guide=FALSE)+
                scale_colour_gradient(low = "red", high="blue")+
                geom_smooth(method="loess")

        multiplot(m1,m2,cols=1)
}

indep.dep.cor(d)
4

1 に答える 1

0

ggplotだから、これは私がこれまでに使用して思いついたものplyrです...私はまだ独立変数のヒストグラムがありません...ああ、multiplotここから来ています: http://wiki.stdout.org/rcookbook/Graphs/ Multiple%20graphs%20on%20one%20page%20(ggplot2)/

require(plyr)
require(ggplot2)

indep.dep.cor <- function(xts.obj, title=""){

        # First column always assumed to be independent
        df <- data.frame(coredata(xts.obj))
        assign('df',df,envir=.GlobalEnv)

        df.l <- melt(df, id.vars=colnames(df)[1], measure.vars=colnames(df)[2:ncol(df)])
        assign('df.l',df.l, envir=.GlobalEnv)

        cor.vals <- ddply(df.l, c("variable"), summarise, round(cor(df[,1],value),3))
        stars <- ddply(df.l, c("variable"), summarise, symnum(cor.test(df[,1],value)$p.value, corr = FALSE, na = FALSE, cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " ")))
        cor.vals$stars <- stars[,2]
        assign('cor.vals',cor.vals,envir=.GlobalEnv)

        bin.w <- min((ddply(df.l,c("variable"),summarise,diff(range(value))/30))[,2])

        m1 <- ggplot(df.l,aes_string(x="value"))+
            facet_grid(.~variable)+
            stat_density(aes(y=..density..),fill=NA, colour="red", size=1.2)+
            geom_histogram(aes(y=..density..),fill="white", colour="black", binwidth=bin.w)+
            opts(title=title)

        m2 <- ggplot(df.l,aes_string(x=colnames(df.l)[1], y="value"))+
            facet_grid(.~variable)+geom_point(aes(alpha=0.2))+
            opts(legend.position="none")+
            geom_text(data=cor.vals,aes(label=paste(cor.vals[,2],cor.vals[,3]),size=abs(cor.vals[,2])*2,colour=cor.vals[,2]),x=Inf,y=Inf,vjust=1,hjust=1,show_guide=FALSE)+
                scale_colour_gradient(low = "red", high="blue")+
                geom_smooth(method="loess")

        multiplot(m1,m2,cols=1)
}

indep.dep.cor(d)
于 2012-10-04T07:00:11.693 に答える