【问题标题】:Visualization of coefficients in R (dot-chart)R中系数的可视化(点图)
【发布时间】:2020-03-20 06:50:17
【问题描述】:

我想绘制来自三个不同模型的系数,以用点图显示估计系数的收缩效果。

更多背景信息:我正在使用分层线性模型,并希望将这些估计值与完全池化和无池化估计值进行比较。

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

    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 做到这一点?

【问题讨论】:

    标签: r ggplot2 regression data-visualization coefficients


    【解决方案1】:

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

    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),]
    

    你会得到下面的图表

    【讨论】:

    • 是否也可以在不分离刻度的情况下以重叠的方式绘制它们? (目的是表明模型 c 的点比模型 a 的点更靠近,这在这个图中比在单一比例的图中更难看到)
    • @RazorLazor,我更新了我的答案,基本上不同的比例是因为使用您的代码创建的数据框将数值转换为因子水平,我修改您的数据框以获取数值。但是在绘制它们之前,您必须在您的实际数据框上进行检查。
    • 看起来很整洁!我会在早上(现在在欧洲很晚)检查它并报告我的结果。数据集有点大(85 组),所以我得看看它在视觉上看起来是否还不错。
    • 第一次尝试失败,但这是我的错误。现在可以使用了,谢谢!
    猜你喜欢
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    相关资源
    最近更新 更多