暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

R数据分析|生成面板模拟数据

1200
点击关注了解更多哦

在数据分析学习的过程中,有时候需要用到面板数据,但收集面板数据又相对费时,因此本文主要介绍如何利用R语言生成一个随机的面板模拟数据,以方便必要时的数据分析与图形绘制。如下图所示:

1、面板模拟数据生成

生成中国34个省份(自治区、直辖市、特别行政区)的2013—2023年的面板模拟数据。主要包括4个要素,id、province、year、value

library(dplyr)
library(ggthemes)
library(ggplot2)

# id, province, year
province_name <- c("河北""山西""黑龙江",  "吉林",  "辽宁",  "江苏",  "浙江"
                   "安徽""福建""江西",  "山东",  "河南",  "湖北",  "湖南",  "广东",
                   "海南","四川",  "贵州",  "云南""陕西",  "甘肃",  "青海",  "台湾",
                   "内蒙古""广西",  "西藏",  "宁夏",  "新疆",  "北京",  "天津",  "上海",
                   "重庆",  "香港",  "澳门" )
province_name
panel_dta <- data.frame(
  id = 1:34,
  province = province_name, 
  year = rep(c(2014:2023), each = 34)) %>% arrange(id, year) %>% 
  mutate(value = rnorm( n = 340, mean = 100, sd = 10))
head(panel_dta)

# id province year     value
# 1  1     河北 2014 102.92901
# 2  1     河北 2015 110.45113
# 3  1     河北 2016 106.42231
# 4  1     河北 2017  83.17789
# 5  1     河北 2018  94.24234
# 6  1     河北 2019 102.25605

复制

2、面板数据绘图

2.1 绘制密度图

绘制变量value的密度图

ggplot(panel_dta, aes( x = value, color = factor(year), fill = factor(year), group =  year)) + 
  geom_density(alpha = 0.4) + 
  theme_bw() + 
  scale_fill_viridis_d() + 
  scale_color_viridis_d() + 
  labs(color = "Year", fill = "Year") + 
  theme(axis.text = element_text(size = 15, colour = "black"),
        axis.title = element_text(size = 16))

复制

2.2 绘制箱线图

绘制变量value的箱线图

ggplot(panel_dta, aes( x = factor(year),  y = value,  fill = factor(year))) + 
  geom_boxplot(color = "black", show.legend = FALSE) + 
  theme_bw() + 
  scale_fill_viridis_d() + 
  scale_color_viridis_d() + 
  labs(  x = "Year") + 
  theme(axis.text = element_text(size = 15, colour = "black"),
        axis.title = element_text(size = 16))

复制

2.3 绘制折线图

绘制面板折线图

ggplot(panel_dta, aes( x = factor(year),  y = value,  fill = factor(year) , group = 1  )) + 
  geom_line( show.legend = FALSE) + 
  geom_point( show.legend = FALSE) + 
  theme_stata() + 
  scale_fill_viridis_d() + 
  facet_wrap(~province ) + 
  scale_color_viridis_d() + 
  labs( x = "Year") + 
  theme(axis.text = element_text(size = 10, colour = "black"), 
        axis.text.x = element_text(angle = 45, hjust = 1),
        axis.title = element_text(size = 13))

复制

3、面板数据计算

计算value变量在不同年份的变异系数

panel_dta %>% group_by(year) %>% summarise(cv = sd(value)/mean(value))
# year     cv
# <int>  <dbl>
#   1  2014 0.0922
# 2  2015 0.110 
# 3  2016 0.0878
# 4  2017 0.117 
# 5  2018 0.104 
# 6  2019 0.0900
# 7  2020 0.0750
# 8  2021 0.0994
# 9  2022 0.0814
# 10  2023 0.0831

复制

4、其他

更多内容可关注微信公众号【日常分享的小懒猫】


如有帮助请多多点赞哦!


文章转载自日常分享的小懒猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论