2016-03-11 21 views
6

ベイジアン単純回帰を実行したとします。私はa(インターセプト)とb(スロープ)の事後分布に基づいて複数の回帰直線をプロットして結果を視覚化したいと思います。ヒートマップのようなスタイルで結果を表示する方法や、オーバーラップを避けるために透明度を使用する方法が不思議です。ここに簡単なggplotアプローチがあります。回帰直線のヒートマップ

library(ggplot2) 
set.seed(123) 

N = 1000 
x = 1:80 
a = rnorm(N,10,3) 
b = rnorm(N,5,2) 

y = vector("list",length=N) 
for(i in 1:N) {y[[i]] = a[i]+b[i]*x} 


df = data.frame(x=rep(x,N),y=unlist(y)) 
df$f = rep(1:N,each=80) 

(plt <- ggplot(df, aes(x, y,group=f)) + 
    geom_jitter(alpha=1/30,width=5,col="blue") + theme_classic()) 

これを行うより良い方法はありますか?オーバーラップ量(ヒートマップのように)によって色が変わるといいでしょう。

+0

私はあなたがタイプミスがあると思う: 'DFする$ F =担当者(1:N、各= 80)' – csgillespie

+0

ありがとう!それを修正しました – beginneR

答えて

5

後部からのサンプルとラインプロットをしないのはなぜ

g = ggplot(df, aes(x, y)) + 
    geom_line(alpha=1/50,col="grey",aes(group=f)) + 
    theme_classic() 

はその後、その後、

g + stat_summary(geom="line", fun.y=mean, color="black", lwd=1) 

を与えるために事後expectionのために暗いの行を追加します。

enter image description here

4

これを行うことができる別の方法は、stat_density_2dの機能はggplot2です。これを行うにはさまざまな方法があります。ヒートマップは逆に

ggplot(df, aes(x = x, y=y))+ 
    stat_density_2d(aes(fill = ..density..), geom = "raster", contour = FALSE)+ 
    scale_fill_gradient(low = "blue", high = "red")+ 
    stat_summary(geom="line", fun.y=mean, color = "white",lwd=1)+ 
    theme_classic() 

heatmap

としてごdf ...

を使用して、あなたにもポイントを使用することができます。

ggplot(df, aes(x = x, y=y))+ 
    stat_density_2d(aes(size = ..density..), geom = "point", contour = FALSE)+ 
    stat_summary(geom="line", fun.y=mean, color = "white",lwd=1)+ 
    theme_classic() 

point density

+0

創造的で美しい – giacomo