我想从三个不同的模型中绘制系数,以点图的形式显示估算系数的收缩效果。

有关更多信息:我正在使用分层线性模型,希望将这些估计值与完整合并和不合并估计值进行比较。

假设我们有一个这样的数据框:

    a <- c(1,2,3,4)
    b <- c(2.5, 2.5, 2.5, 2.5)
    c <- c(1.2,2.3,2.8,3.7)
    city <- c("London", "Madrid", "Sidney", "Paris")
    df <- as.data.frame(cbind(city,a,b,c))
df <- df[order(df$a),]

我想像picture一样以降序显示它们,但没有标准差,只是点。有没有办法用ggplot做到这一点?

最佳答案

从数据帧df开始,您可以使用pivot_longer重塑数据,并通过在df$city中调用scale_x_discrete来保存数据顺序:

library(tidyr)
df2 = df %>% pivot_longer(.,-city, names_to =  "Model", values_to = "value")

library(ggplot2)
ggplot(df2, aes(x = city, y = value, color = Model)) + geom_point() + coord_flip() +
  scale_x_discrete(limits = df$city)

我重新排列了数据框df以获得数值(将cbind与数据框结合使用往往会将数据转换为因子水平):

a <- c(1,2,3,4)
b <- c(2.5, 2.5, 2.5, 2.5)
c <- c(1.2,2.3,2.8,3.7)
city <- c("London", "Madrid", "Sidney", "Paris")
df <- data.frame(city,a,b,c)
df <- df[order(df$a),]

然后您得到以下图表
r - 可视化R中的系数(点图)-LMLPHP

关于r - 可视化R中的系数(点图),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59024041/

10-12 21:15