# setup
library(tidyverse)
library(rio)
library(sf)
library(sjmisc) # rec()
library(RColorBrewer)
library(here)
library(janitor)
# 各省教育财政支出数据导入与处理
## 1999-2006年数据
<- import(here("files/middle_zone/expend_teacher.xlsx"), which = 1) %>%
pexpend_06 mutate(across(c(year:outlay_self), as.numeric))
## 2007-2019年的数据
<- import(here("files/middle_zone/expend_teacher.xlsx"), which = 2) %>%
pexpend_19 mutate(across(c(year:outlay), as.numeric))
# 1999-2019年各省教师数据导入与处理
<- import(here("files/middle_zone/expend_teacher.xlsx"), which = 3) %>%
pteacher mutate(across(c(year, teacher), as.numeric))
## 数据预处理
<- pexpend_19 %>%
data_0719 select(province, year, sum_person) %>%
left_join(pteacher, by = c("province", "year")) %>%
drop_na(teacher) %>%
mutate(salary = sum_person * 1000 / teacher)
<- pexpend_06 %>%
data_9906 select(province, year, sum_person) %>%
left_join(pteacher, by = c("province", "year")) %>%
drop_na(teacher) %>%
mutate(salary = sum_person * 1000 / teacher)
## 1999-2006,2007-2019年数据合并
<- bind_rows(data_9906, data_0719)
salary_total
# 地图数据导入与处理
<- st_read(here("files/middle_zone/china_shp"),quiet = TRUE)
china $NAME <- rec(china$NAME, rec="北京市=北京;天津市=天津; else=copy")
china
# 合并地图与教师工资数据
<- china %>%
sh_salary right_join(salary_total,by=c("NAME"="province")) %>%
group_by(year) %>%
mutate(salary_d=findInterval(salary,quantile(salary,prob=0:4/4))) %>%
mutate(salary_dc=as.character(salary_d))
中小学教师“中部凹陷”问题
各省中小学教师工资水平的比较
各省中小学教师工资的差异在哪?现有统计数据中没有直接的数据。但统计数据中有各省各学段人员经费的总支出,而人员经费支出即是用于教师工资及福利的支出,该数值除以各省各段专任教师的数量,即可以在一定程度上反映各省中小学教师的工资水平。接下来我将以各省小学的人员经费数据和小学教师数量为例。
2019年各省小学教师工资水平分布情况
下图@fig-plot1 图 1 呈现的是2019年各省小学教师工资水平的空间分布情况,如图所示,可以发现一个重要事实:小学教师工资水平较低的省份主要是中部省份,而经济发展水平较低的省,比如西藏、青海,小学教师工资水平也中部河南江西要高。
ggplot() +
geom_sf(data = china, size = 0.02) +
geom_sf(
data = filter(sh_salary, year == 2019),
aes(fill = salary_dc),
size = 0.02, show.legend = F
+
) scale_fill_brewer() +
theme_void()
历年各省小学教师工资水平分布情况
上图只能反映2019年的状况,那么从历史角度来看是怎样的呢?下图 @fig-plot2 图 2 是1999至2019年各省小学教师工资水平的分布图,可以发现2019年各省小学教师工资水平的分布并不是一个截面的状态,而是一个长期现象。
ggplot() +
geom_sf(data = china,size=0.02)+
geom_sf(data=sh_salary,aes(fill=salary_dc),
size=0.02,show.legend = F)+
scale_fill_brewer()+
theme_void() +
facet_wrap(~year,ncol = 5)
中部凹陷为什么存在
首先想到的可能与各省的经济水平有关,下面来看一下各省人均GDP的分布。省级财政经费还有中央转移支付,我们也将看看中央转移支付占比与人均转移支付的问题。首先导入数据,数据主要是各省的GDP数据和财政收入与中央政府转移支付的数据。
#导入数据
##2011-2020年各省gdp数量
<- import(here("files/middle_zone/higheredu_gdp.xlsx"))
higher <- higher %>%
gdp select(province, starts_with("gdp")) %>%
drop_na(province) %>%
rename(name=province) %>%
pivot_longer(starts_with("gdp"),names_to="year", values_to = "gdp") %>%
mutate(year=parse_number(year))
##转移支付数据
<- import(here("files/middle_zone/province_transfer.xlsx")) %>%
transfer clean_names() %>%
mutate(total=str_detect(item,"Transfer")) %>%
pivot_longer(starts_with("x"),names_to = "year",values_to="revenue") %>%
mutate(total=as.factor(total)) %>%
select(province, year, total, revenue) %>%
pivot_wider(names_from = total, values_from = revenue) %>%
mutate(year=parse_number(year)) %>%
rename(total=`FALSE`,transfer=`TRUE`)
##1999-2019年各省财政收入、转移支付收入
<- transfer %>%
transfer5 filter(year>1998 & year<2020) %>%
mutate(ratio=transfer/total)
#各省人口数据(1949-2019)
<- import(here("files/middle_zone/population.xlsx")) %>%
popluation clean_names() %>%
mutate(type=str_detect(population,"城镇|乡村")) %>% # 选择各省总人口数据
filter(type==FALSE) %>%
mutate(name=str_sub(population,5)) %>% # 中文省名
pivot_longer(starts_with("x"),
names_to = "year",values_to="pop") %>%
mutate(year=parse_number(year)) %>%
select(name, province, year, pop)
##1999-2020各省人口数据
<- popluation %>%
pop filter(year>1998 & year<2020)
##合并人口与转移支付数据
<- pop %>%
trans_pop left_join(transfer5, by=c("province","year")) %>%
mutate(transfer_per=transfer/pop)
#区域指示数据
<- import(here("files/middle_zone/china_zone.xlsx")) %>%
region select(name,region)
#多个数据合并
<- salary_total %>%
data_triple rename(name=province) %>%
left_join(trans_pop,by=c("name","year")) %>%
left_join(gdp,by=c("name", "year")) %>%
left_join(region,by="name")
查看教师工资水平、人均GDP、转移支付占比之间的关系
下图 图 3 展示的是2019年各省小学教师工资水平的排序图,小学教师工资水平较低的省份依次是河南、河北、江西、山西、广西、陕西。水平较高的省份主要是北京、上海、西藏、天津、青海。图B和C,可以看出各省GDP与中央政府财政转移支付之间的互补关系。
theme_set(theme_bw(base_family = "KaiTi"))
<- data_triple %>%
plot_trans filter(year == 2019) %>%
ggplot() +
geom_col(aes(y = fct_reorder(name, salary), x = ratio))+
labs(y=NULL)
<- data_triple %>%
plot_gdp filter(year == 2019) %>%
ggplot() +
geom_col(aes(y = fct_reorder(name, salary), x = gdp))+
labs(y=NULL)
<- data_triple %>%
plot_salary filter(year == 2019) %>%
ggplot() +
geom_col(aes(y = fct_reorder(name, salary), fill = region, x = salary))+
scale_fill_brewer()+
labs(y=NULL)
# comparion
library(patchwork)
+plot_trans + plot_gdp+plot_annotation(tag_levels = 'A') plot_salary
2019年各省教师工资水平、人均GDP、转移支付占比的空间分布图
我们以2019年各省小学教师工资水平为例,通过下图 图 4 可以发现:小学教师工资水平高的省份要么是本省人均GDP较高,要么是中央转移支付占比比较高。小学教师工资水平低的省份主要分布在中部地区,原因在于本省人均GDP不高,且中央转移支付的占比也不高。
<- data_triple %>%
data2019 filter(year==2019)
<- china %>%
sh_total right_join(data2019,by=c("NAME"="name")) %>%
mutate(salary_d=findInterval(salary,quantile(salary,prob=0:6/6)),
ratio_d=findInterval(ratio,quantile(ratio,prob=0:6/6)),
gdp_d=findInterval(gdp,quantile(gdp,prob=0:6/6)),
%>%
) mutate(salary_dc=as.character(salary_d),
ratio_dc=as.character(ratio_d),
gdp_dc=as.character(gdp_d))
<- ggplot() +
plot1 geom_sf(data = china,size=0.02)+
geom_sf(data=sh_total,aes(fill=salary_dc),size=0.02,show.legend = F)+
scale_fill_brewer()+
theme_void()+
labs(title = "Fig 1. 2019年各省小学教师工资水平图")
<- ggplot() +
plot2 geom_sf(data = china,size=0.02)+
geom_sf(data=sh_total,aes(fill=gdp_dc),size=0.02,show.legend = F)+
scale_fill_brewer()+
theme_void()+
labs(title = "Fig 2. 2019年各省人均GDP分布图")
<- ggplot() +
plot3 geom_sf(data = china,size=0.02)+
geom_sf(data=sh_total,aes(fill=ratio_dc),size=0.02,show.legend = F)+
scale_fill_brewer()+
theme_void()+
labs(title = "Fig 3. 2019各省中央转移支付占比图")
/plot2/plot3)+plot_annotation(tag_levels = 'A')&
(plot1theme(plot.title = element_text(family = "KaiTi"))