R语言 ggplot和总结:最好的统计方法是什么?

eoigrqb6  于 2023-03-27  发布在  其他
关注(0)|答案(1)|浏览(152)

我想找一种方法来画一些汇总统计数据,但我不明白哪一个是正确的。
我有2个数据集关于相同的城市,我需要给予一个图形表示在4四个变量(2为第一个数据集,2为第二个)
这些是我的总结

> summary(data_1$New_wage)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  777.7  1480.0  1633.1  1634.6  1774.3  2408.1 

> summary(data_1$Old_wage)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  471.3   658.9   693.1   696.9   735.2  1001.9 

> summary(data_2$New_wage)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   1895    2072    2154    2166    2259    2543 

> summary(data_2$Old_wage)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   1777    2109    2236    2244    2352    2833

我需要把它们画在一个独特的图中,以显示每个分布从哪个五分位数开始,以及中位数(或平均值)是否接近。
显示此类信息的最佳方式是什么?
我想用密度图(它是正确的吗?)

ggplot()+
  geom_density(data=data_1, aes(x= `New_wage`),alpha=.8, fill="pink")+
  geom_density(data=data_1, aes(x= `Old_wage`),alpha=.8, fill="yellow")+
  geom_density(data=data_2, aes(x= `New_wage`),alpha=.8, fill="lightblue")+
  geom_density(data=data_2, aes(x= `Old_wage`),alpha=.8, fill="orange")+
  geom_vline(xintercept = 1633.1, size=0.5)+
  geom_vline(xintercept = 693.1, size=0.5)+
  geom_vline(xintercept = 2154, size=0.5)+
  geom_vline(xintercept = 2236, size=0.5)+
  theme_classic()

但我得到的是相当丑陋的

你知道有什么方法可以让它更好吗?或者任何其他类型的情节,可以更好地显示这些信息?
以下是每个数据集的示例
一个二个一个一个

mspsb9vt

mspsb9vt1#

首先,将数据框绑定在一起,然后转换为长格式。

library(tidyverse)

df <- bind_rows(data_1, data_2, .id = "data") %>%
  mutate(Data = c("Data 1", "Data 2")[as.numeric(data)]) %>%
  pivot_longer(New_wage:Old_wage, names_to = "Wage") %>%
  mutate(Wage = factor(Wage, c("Old_wage", "New_wage")))

然后,您可以选择要如何表示数据。
例如,您可以使用ggstatsplot获得相当复杂的结果:

library(ggstatsplot)

grouped_ggwithinstats(df, Wage, value, grouping.var = Data)

或者如果你更喜欢vanilla ggplot,你可以这样做:

ggplot(df, aes(Data, value, fill = Wage)) +
  geom_violin(alpha = 0.5) +
  geom_point(position = position_jitterdodge(dodge.width = 0.9, 
                                             jitter.width = 0.2),
             alpha = 0.3) +
  geom_errorbar(stat = "summary", position = "dodge", key_glyph = draw_key_path,
                aes(ymax = after_stat(y), ymin = after_stat(y), 
                    linetype = "mean")) +
  scale_fill_manual(values = c("deepskyblue4", "orange")) +
  labs(linetype = NULL) +
  theme_minimal(base_size = 16)

相关问题