假设我运行贝叶斯简单线性回归。我想通过基于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())

有更好的方法可以做到这一点吗?如果颜色根据重叠量而变化(就像在热图中一样),那将是很好的。

最佳答案

为什么不对后部样本进行线图绘制

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)

为了给

r - 回归线的热图-LMLPHP

关于r - 回归线的热图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35936040/

10-12 23:21