重复刘保中的《我国城乡家庭教育投入状况的比较研究》

library(tidyverse)
library(here)
library(fs)
library(purrr)
library(haven)
library(broom)
library(MASS)
library(VGAM)

摘要

本文使用CFPS2014 年的数据,在教育期望、教育支出和教育参与三个维度上对当前我国城乡家庭教育 投入的状况进行了比较分析。

思路

#数据

儿童表

cfps2014child <- read_dta("../../cfps/data/2014AllData/Cfps2014child_170630.dta",
                          encoding = "GB2312"
)

total <- cfps2014child  %>% 
    filter(! wf301m  %in% c(-8,-1,1,2)) #从小学开始,不包括学前教育

#家庭教育期望样本

wish_edu <- total %>%
  dplyr::select(
    wd2,#希望孩子受教育程度
    wa4,#孩子现在的户口状况,后面要分农村城市
    cfps_gender,
    cfps2014_age,
      cfps2014edu
  ) %>%
    dplyr::filter(! wd2 %in% c(-8,-1),
          wa4 %in% c(1,3))#只要农业户口和非农业户口的
wish_edu_c <- wish_edu %>%
     dplyr::mutate(wd2_c = case_when(
      wd2 == 9 ~ 0,#按年限教育重编码
      wd2 == 2 ~ 6,
      wd2 == 3 ~ 9,
      wd2 == 4 ~ 12,
      wd2 == 5 ~ 15,
      wd2 == 6 ~ 16,
      wd2 == 7 ~ 19,
      wd2 == 8 ~ 23,
      TRUE ~NA_real_))
wish_edu_z <- wish_edu_c %>%
    dplyr:: mutate(wd2_c_z = case_when(
     wd2 %in% c(5,6,7,8) ~ 1,#按专科上下教育重编码
     wd2 %in% c(9,2,3,4) ~ 0,
     TRUE ~ NA_real_))%>%
  haven::zap_labels() %>%
head()
#wish_edu_z %>% head()

#家庭教育支出

pay_edu <- total %>%
  dplyr::select(
    wd503m,#课外辅导费(元)
    wd5ckp,#确认教育总支出
    wd5total, #过去12个月教育总支出元
    wa4,#孩子现在的户口状况,后面要分农村城市
    cfps_gender,
    cfps2014_age,
    cfps2014edu
    
  ) %>%
  filter(wd5ckp == 5)%>%#确认教育总支出是差不多的
  filter(wd503m != -1,
         wa4 %in% c(1,3)#只要农业户口和非农业户口的
         )%>%
  drop_na()
pay_edu_c <- pay_edu %>%
  mutate(wd503m_c = if_else(wd503m >0.5,log(wd503m),0.5)) %>%#辅导费与教育总支出取对数
  mutate(wd5total_c = if_else(wd5total >0.5,log(wd5total),0.5)) %>%
haven::zap_labels() %>%
head()
#pay_edu_c %>%head()

#家庭教育参与

join_edu <- total %>%
  dplyr::select(
    wf601m,#为孩子学习放弃看电视
    wf602m,#常与孩子谈学校里的事
    wf603m,#要求孩子完成作业
    wf604m,#检查孩子作作业
    wf605m,#阻止孩子看电视
    wf606m, #限制孩子看的节目
    wa4,#孩子现在的户口状况,后面要分农村城市
    cfps_gender,
    cfps2014_age,
    cfps2014edu
  ) %>%
  filter(! wf601m %in% c(-1,-2) )%>%
  filter(wf602m != -1 )%>%
  filter(wf603m != -1 )%>%
  filter(wf604m != -1 )%>%
  filter(wf605m != -1 )%>%
  filter(! wf606m %in% c(-1,-2),wa4 %in% c(1,3)#只要农业户口和非农业户口的
         )
change <- function(x){
  case_when(
    x == 1 ~ 5,
    x == 2 ~ 4,
    x == 3 ~ 3,
    x == 4 ~ 2,
    x == 5 ~ 1,
    TRUE ~NA_real_
  )
}


join_edu_c <- join_edu %>%
  mutate(wf601m_c = change(wf601m),#家庭教育参与重编码
         wf602m_c = change(wf602m),
         wf603m_c = change(wf603m),
         wf604m_c = change(wf604m),
         wf605m_c = change(wf605m),
         wf606m_c = change(wf606m)
         )

#家庭教育期望样本对比矩阵

wish_edu_z  %>% 
  group_by(wa4) %>%
  summarize(mean_up = mean(wd2_c_z)*100,mean_year = mean(wd2_c),n = n()) %>%
  t() %>%
  as.data.frame() %>% 
  rename(city = V1,countryside = V2) %>%
  dplyr::select(countryside ,city)
knitr::include_graphics("../img/edu.png")

#家庭教育支出对比矩阵

pay_edu  %>% 
  group_by(wa4) %>%
  summarize(mean_total = mean(wd5total),
            mean_outside = mean(wd503m),
            odd = mean_outside/mean_total*100, n = n())%>%
  t()
#>                    [,1]       [,2]
#> wa4             1.00000    3.00000
#> mean_total   2380.76665 5324.40140
#> mean_outside  271.77843 2488.23916
#> odd            11.41558   46.73275
#> n            2717.00000  715.00000
knitr::include_graphics("../img/pay.png")

#家庭教育参与对比矩阵

ratio <- function(x){
   a =sum(x %in% c(4,5))
   b = sum(x %in% c(1,2,3,4,5))
   a/b*100
}
ratio(join_edu_c $ wf601m_c)
#> [1] 70.66356

#join_edu_c %>% colnames()
join_edu_c  %>% 
  group_by(wa4) %>%
  summarize(wf601m_c_over2 = ratio(wf601m_c),
            wf602m_c_over2 = ratio(wf602m_c),
            wf603m_c_over2 = ratio(wf603m_c),
            wf604m_c_over2 = ratio(wf604m_c),
            wf605m_c_over2 = ratio(wf605m_c),
            wf606m_c_over2 = ratio(wf606m_c),
            n = n()) %>%
  t() 
#>                      [,1]      [,2]
#> wa4               1.00000   3.00000
#> wf601m_c_over2   68.74262  77.83903
#> wf602m_c_over2   49.61629  62.95480
#> wf603m_c_over2   84.97639  86.76957
#> wf604m_c_over2   51.91854  64.60860
#> wf605m_c_over2   62.27863  64.60860
#> wf606m_c_over2   35.27155  37.92723
#> n              3388.00000 907.00000
knitr::include_graphics("../img/join.png")

#家庭教育期望样本

#wish_edu_z %>% 
#  ggplot(aes(x= wa4 ,y = wd2_c)) +
#  geom_point()
wish_edu_z %>% count(wa4)
explot_edu_z <- glm(wd2_c_z ~ wa4,data = wish_edu_z ,family = binomial(link = "logit"))
summary(explot_edu_z)
#> 
#> Call:
#> glm(formula = wd2_c_z ~ wa4, family = binomial(link = "logit"), 
#>     data = wish_edu_z)
#> 
#> Deviance Residuals: 
#>        1         2         3         4         5         6  
#> -0.90052  -0.90052   1.48230   0.00008   0.00008   0.00008  
#> 
#> Coefficients:
#>             Estimate Std. Error z value Pr(>|z|)
#> (Intercept)   -10.82    3104.42  -0.003    0.997
#> wa4            10.13    3104.42   0.003    0.997
#> 
#> (Dispersion parameter for binomial family taken to be 1)
#> 
#>     Null deviance: 7.6382  on 5  degrees of freedom
#> Residual deviance: 3.8191  on 4  degrees of freedom
#> AIC: 7.8191
#> 
#> Number of Fisher Scoring iterations: 18
exp(coef(explot_edu_z))
#>  (Intercept)          wa4 
#> 1.994055e-05 2.507453e+04

explot_edu_z_2 <- glm(wd2_c_z ~ wa4 + cfps_gender + cfps2014_age+ cfps2014edu,data = wish_edu_z ,family = binomial(link = "logit"))
summary(explot_edu_z_2)
#> 
#> Call:
#> glm(formula = wd2_c_z ~ wa4 + cfps_gender + cfps2014_age + cfps2014edu, 
#>     family = binomial(link = "logit"), data = wish_edu_z)
#> 
#> Deviance Residuals: 
#>          1           2           3           4           5           6  
#> -6.547e-06  -1.197e-05   1.197e-05   6.547e-06   2.110e-08   1.197e-05  
#> 
#> Coefficients:
#>                Estimate Std. Error z value Pr(>|z|)
#> (Intercept)  -3.224e+01  1.326e+06       0        1
#> wa4           2.336e+01  5.067e+04       0        1
#> cfps_gender   4.069e+01  5.610e+05       0        1
#> cfps2014_age -1.207e+00  1.056e+05       0        1
#> cfps2014edu   1.207e+00  1.493e+05       0        1
#> 
#> (Dispersion parameter for binomial family taken to be 1)
#> 
#>     Null deviance: 7.6382e+00  on 5  degrees of freedom
#> Residual deviance: 5.1552e-10  on 1  degrees of freedom
#> AIC: 10
#> 
#> Number of Fisher Scoring iterations: 23
exp(coef(explot_edu_z_2))
#>  (Intercept)          wa4  cfps_gender cfps2014_age  cfps2014edu 
#> 9.960328e-15 1.396053e+10 4.674889e+17 2.992220e-01 3.342002e+00

explot_edu_c <- lm(wd2_c ~ wa4,data = wish_edu_z)#lm的结果为0.5,他为0.3
summary(explot_edu_c)
#> 
#> Call:
#> lm(formula = wd2_c ~ wa4, data = wish_edu_z)
#> 
#> Residuals:
#>      1      2      3      4      5      6 
#> -1.333 -1.333  2.667 -2.000  1.000  1.000 
#> 
#> Coefficients:
#>             Estimate Std. Error t value Pr(>|t|)   
#> (Intercept)  11.0000     1.8634   5.903  0.00412 **
#> wa4           2.3333     0.8333   2.800  0.04881 * 
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 2.041 on 4 degrees of freedom
#> Multiple R-squared:  0.6622, Adjusted R-squared:  0.5777 
#> F-statistic:  7.84 on 1 and 4 DF,  p-value: 0.04881

explot_edu_c_1 <- lm(wd2_c ~ wa4+ cfps_gender + cfps2014_age,data = wish_edu_z)
summary(explot_edu_c_1)
#> 
#> Call:
#> lm(formula = wd2_c ~ wa4 + cfps_gender + cfps2014_age, data = wish_edu_z)
#> 
#> Residuals:
#>          1          2          3          4          5          6 
#>  8.882e-16 -7.143e-01  7.143e-01 -1.143e+00 -7.143e-01  1.857e+00 
#> 
#> Coefficients:
#>              Estimate Std. Error t value Pr(>|t|)
#> (Intercept)   15.1429    16.5289   0.916    0.456
#> wa4            2.2143     0.8207   2.698    0.114
#> cfps_gender    0.7857     6.5652   0.120    0.916
#> cfps2014_age  -0.3571     1.1606  -0.308    0.787
#> 
#> Residual standard error: 1.773 on 2 degrees of freedom
#> Multiple R-squared:  0.8726, Adjusted R-squared:  0.6815 
#> F-statistic: 4.566 on 3 and 2 DF,  p-value: 0.1849
knitr::include_graphics("../img/edu_lm.png")

#家庭教育支出

#pay_edu_c %>% count(wd5total)

explot_pay_c <- lm(wd5total_c ~ wa4 ,data = pay_edu_c)
summary(explot_pay_c)
#> 
#> Call:
#> lm(formula = wd5total_c ~ wa4, data = pay_edu_c)
#> 
#> Residuals:
#>        1        2        3        4        5        6 
#>  0.14422  0.01905 -0.16327 -0.45404  0.19003  0.26401 
#> 
#> Coefficients:
#>             Estimate Std. Error t value Pr(>|t|)    
#> (Intercept)   7.0618     0.2738  25.794 1.34e-05 ***
#> wa4           0.9255     0.1224   7.559  0.00164 ** 
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 0.2999 on 4 degrees of freedom
#> Multiple R-squared:  0.9346, Adjusted R-squared:  0.9182 
#> F-statistic: 57.14 on 1 and 4 DF,  p-value: 0.001641

explot_pay_c <- lm(wd5total_c ~ wa4 + cfps_gender + cfps2014_age + cfps2014edu,data = pay_edu_c)
summary(explot_pay_c)
#> 
#> Call:
#> lm(formula = wd5total_c ~ wa4 + cfps_gender + cfps2014_age + 
#>     cfps2014edu, data = pay_edu_c)
#> 
#> Residuals:
#>          1          2          3          4          5          6 
#>  6.653e-18 -1.154e-01  1.154e-01 -1.154e-01  1.154e-01  3.662e-17 
#> 
#> Coefficients:
#>              Estimate Std. Error t value Pr(>|t|)  
#> (Intercept)    0.5878     3.2691   0.180   0.8867  
#> wa4            0.8956     0.1154   7.758   0.0816 .
#> cfps_gender    2.5999     1.4556   1.786   0.3249  
#> cfps2014_age   0.6026     0.3054   1.973   0.2986  
#> cfps2014edu   -1.1955     0.7209  -1.658   0.3454  
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 0.2309 on 1 degrees of freedom
#> Multiple R-squared:  0.9903, Adjusted R-squared:  0.9515 
#> F-statistic: 25.54 on 4 and 1 DF,  p-value: 0.1472

fit1 <- vglm(wd503m_c ~ wa4, tobit, data = pay_edu_c, trace = TRUE) 
#> VGLM    linear loop  1 :  loglikelihood = -1.076736
#> VGLM    linear loop  2 :  loglikelihood = -0.7600138
#> VGLM    linear loop  3 :  loglikelihood = -0.7420704
#> VGLM    linear loop  4 :  loglikelihood = -0.7420165
#> VGLM    linear loop  5 :  loglikelihood = -0.7420165
coef(fit1, matrix = TRUE) 
#>                   mu loglink(sd)
#> (Intercept) 5.850474   -1.295269
#> wa4         1.192436    0.000000
summary(fit1)
#> 
#> Call:
#> vglm(formula = wd503m_c ~ wa4, family = tobit, data = pay_edu_c, 
#>     trace = TRUE)
#> 
#> Pearson residuals:
#>        mu loglink(sd)
#> 1 -0.4936    -0.53483
#> 2 -0.4936    -0.53483
#> 3  0.9872    -0.01803
#> 4 -0.7941    -0.26121
#> 5  1.7373     1.42698
#> 6 -0.9432    -0.07808
#> 
#> Coefficients: 
#>               Estimate Std. Error z value Pr(>|z|)    
#> (Intercept):1   5.8505     0.2500  23.405  < 2e-16 ***
#> (Intercept):2  -1.2953     0.2887  -4.487 7.23e-06 ***
#> wa4             1.1924     0.1118  10.667  < 2e-16 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Names of linear predictors: mu, loglink(sd)
#> 
#> Log-likelihood: -0.742 on 9 degrees of freedom
#> 
#> Number of Fisher scoring iterations: 5 
#> 
#> No Hauck-Donner effect found in any of the estimates
knitr::include_graphics("../img/pay_logit.png")

#家庭教育参与

#join_edu_c %>% colnames()
#aa %>% head ()

aa <- join_edu_c %>%
  mutate_at(vars(wf601m_c:wf606m_c), as.factor) #%>%
 #dplyr::select(wf601m_c:wf606m_c)
#aa %>%
 # polr(. ~ wa4, data = aa, Hess = TRUE) %>%
  #  summary()
polr(wf601m_c ~ wa4, data = aa, Hess = TRUE)
#> Call:
#> polr(formula = wf601m_c ~ wa4, data = aa, Hess = TRUE)
#> 
#> Coefficients:
#>       wa4 
#> 0.2625907 
#> 
#> Intercepts:
#>        1|2        2|3        3|4        4|5 
#> -2.0132501 -1.2275277 -0.5173662  1.4540002 
#> 
#> Residual Deviance: 11839.09 
#> AIC: 11849.09

polr(wf602m_c ~ wa4, data = aa, Hess = TRUE) %>%
    summary()
#> Call:
#> polr(formula = wf602m_c ~ wa4, data = aa, Hess = TRUE)
#> 
#> Coefficients:
#>      Value Std. Error t value
#> wa4 0.3202    0.03442   9.303
#> 
#> Intercepts:
#>     Value    Std. Error t value 
#> 1|2  -1.6446   0.0667   -24.6665
#> 2|3  -0.7303   0.0590   -12.3700
#> 3|4   0.3595   0.0576     6.2451
#> 4|5   2.6048   0.0729    35.7257
#> 
#> Residual Deviance: 12371.70 
#> AIC: 12381.70

polr(wf603m_c ~ wa4, data = aa, Hess = TRUE) %>%
    summary()
#> Call:
#> polr(formula = wf603m_c ~ wa4, data = aa, Hess = TRUE)
#> 
#> Coefficients:
#>      Value Std. Error t value
#> wa4 0.1437    0.03667   3.919
#> 
#> Intercepts:
#>     Value    Std. Error t value 
#> 1|2  -2.9789   0.0923   -32.2616
#> 2|3  -2.2304   0.0749   -29.7874
#> 3|4  -1.5642   0.0661   -23.6765
#> 4|5   1.1539   0.0631    18.2888
#> 
#> Residual Deviance: 9545.443 
#> AIC: 9555.443

polr(wf604m_c ~ wa4, data = aa, Hess = TRUE) %>%
    summary()
#> Call:
#> polr(formula = wf604m_c ~ wa4, data = aa, Hess = TRUE)
#> 
#> Coefficients:
#>      Value Std. Error t value
#> wa4 0.3004    0.03435   8.743
#> 
#> Intercepts:
#>     Value    Std. Error t value 
#> 1|2  -1.1082   0.0608   -18.2272
#> 2|3  -0.4796   0.0576    -8.3215
#> 3|4   0.2379   0.0570     4.1755
#> 4|5   2.1474   0.0673    31.9299
#> 
#> Residual Deviance: 12839.09 
#> AIC: 12849.09

polr(wf605m_c ~ wa4, data = aa, Hess = TRUE) %>%
    summary()
#> Call:
#> polr(formula = wf605m_c ~ wa4, data = aa, Hess = TRUE)
#> 
#> Coefficients:
#>       Value Std. Error t value
#> wa4 0.07483    0.03468   2.158
#> 
#> Intercepts:
#>     Value    Std. Error t value 
#> 1|2  -2.0725   0.0699   -29.6286
#> 2|3  -1.3594   0.0625   -21.7570
#> 3|4  -0.4156   0.0584    -7.1156
#> 4|5   1.9283   0.0668    28.8633
#> 
#> Residual Deviance: 11850.26 
#> AIC: 11860.26

polr(wf606m_c ~ wa4, data = aa, Hess = TRUE) %>%
    summary()
#> Call:
#> polr(formula = wf606m_c ~ wa4, data = aa, Hess = TRUE)
#> 
#> Coefficients:
#>      Value Std. Error t value
#> wa4 0.1188    0.03326    3.57
#> 
#> Intercepts:
#>     Value   Std. Error t value
#> 1|2 -0.5693  0.0571    -9.9646
#> 2|3  0.0660  0.0566     1.1671
#> 3|4  0.7542  0.0577    13.0629
#> 4|5  2.7584  0.0772    35.7097
#> 
#> Residual Deviance: 12823.06 
#> AIC: 12833.06
#broom::tidy(mod_mass)
knitr::include_graphics("../img/join_logit.png")

#家庭教育参与_2

aa <- join_edu_c %>%
  mutate_at(vars(wf601m_c:wf606m_c), as.factor) #%>%

polr(wf601m_c ~ wa4 + cfps_gender + cfps2014_age + cfps2014edu, data = aa, Hess = TRUE) %>%
    summary()
#> Call:
#> polr(formula = wf601m_c ~ wa4 + cfps_gender + cfps2014_age + 
#>     cfps2014edu, data = aa, Hess = TRUE)
#> 
#> Coefficients:
#>                 Value Std. Error t value
#> wa4           0.26350    0.03528  7.4694
#> cfps_gender  -0.02358    0.05628 -0.4189
#> cfps2014_age -0.07390    0.01673 -4.4178
#> cfps2014edu   0.02344    0.07353  0.3187
#> 
#> Intercepts:
#>     Value    Std. Error t value 
#> 1|2  -2.8057   0.1463   -19.1745
#> 2|3  -2.0166   0.1413   -14.2684
#> 3|4  -1.3024   0.1390    -9.3721
#> 4|5   0.6843   0.1379     4.9629
#> 
#> Residual Deviance: 11795.63 
#> AIC: 11811.63

polr(wf602m_c ~ wa4+ cfps_gender + cfps2014_age+ cfps2014edu, data = aa, Hess = TRUE) %>%
    summary()
#> Call:
#> polr(formula = wf602m_c ~ wa4 + cfps_gender + cfps2014_age + 
#>     cfps2014edu, data = aa, Hess = TRUE)
#> 
#> Coefficients:
#>                 Value Std. Error t value
#> wa4           0.31678    0.03456  9.1654
#> cfps_gender   0.01107    0.05566  0.1988
#> cfps2014_age -0.09369    0.01672 -5.6027
#> cfps2014edu   0.14179    0.07251  1.9554
#> 
#> Intercepts:
#>     Value    Std. Error t value 
#> 1|2  -2.4702   0.1439   -17.1633
#> 2|3  -1.5532   0.1400   -11.0954
#> 3|4  -0.4553   0.1379    -3.3010
#> 4|5   1.8077   0.1419    12.7389
#> 
#> Residual Deviance: 12325.94 
#> AIC: 12341.94

polr(wf603m_c ~ wa4+ cfps_gender + cfps2014_age+ cfps2014edu, data = aa, Hess = TRUE) %>%
    summary()
#> Call:
#> polr(formula = wf603m_c ~ wa4 + cfps_gender + cfps2014_age + 
#>     cfps2014edu, data = aa, Hess = TRUE)
#> 
#> Coefficients:
#>                 Value Std. Error t value
#> wa4           0.15392    0.03700   4.160
#> cfps_gender   0.09319    0.05985   1.557
#> cfps2014_age -0.10918    0.01780  -6.133
#> cfps2014edu  -0.08317    0.07879  -1.056
#> 
#> Intercepts:
#>     Value    Std. Error t value 
#> 1|2  -4.2678   0.1668   -25.5792
#> 2|3  -3.5127   0.1573   -22.3248
#> 3|4  -2.8370   0.1526   -18.5916
#> 4|5  -0.0576   0.1445    -0.3986
#> 
#> Residual Deviance: 9424.457 
#> AIC: 9440.457

polr(wf604m_c ~ wa4+ cfps_gender + cfps2014_age+ cfps2014edu, data = aa, Hess = TRUE) %>%
    summary()
#> Call:
#> polr(formula = wf604m_c ~ wa4 + cfps_gender + cfps2014_age + 
#>     cfps2014edu, data = aa, Hess = TRUE)
#> 
#> Coefficients:
#>                Value Std. Error t value
#> wa4           0.3409    0.03474   9.815
#> cfps_gender   0.1586    0.05564   2.849
#> cfps2014_age -0.2144    0.01699 -12.624
#> cfps2014edu  -0.2185    0.07275  -3.003
#> 
#> Intercepts:
#>     Value    Std. Error t value 
#> 1|2  -3.7562   0.1488   -25.2379
#> 2|3  -3.0778   0.1455   -21.1471
#> 3|4  -2.2803   0.1419   -16.0693
#> 4|5  -0.1917   0.1375    -1.3938
#> 
#> Residual Deviance: 12280.24 
#> AIC: 12296.24

polr(wf605m_c ~ wa4+ cfps_gender + cfps2014_age+ cfps2014edu, data = aa, Hess = TRUE) %>%
    summary()
#> Call:
#> polr(formula = wf605m_c ~ wa4 + cfps_gender + cfps2014_age + 
#>     cfps2014edu, data = aa, Hess = TRUE)
#> 
#> Coefficients:
#>                 Value Std. Error t value
#> wa4           0.08158    0.03485   2.341
#> cfps_gender   0.09402    0.05671   1.658
#> cfps2014_age -0.05063    0.01698  -2.981
#> cfps2014edu  -0.08612    0.07469  -1.153
#> 
#> Intercepts:
#>     Value    Std. Error t value 
#> 1|2  -2.6987   0.1463   -18.4519
#> 2|3  -1.9813   0.1423   -13.9237
#> 3|4  -1.0311   0.1397    -7.3828
#> 4|5   1.3265   0.1410     9.4056
#> 
#> Residual Deviance: 11808.88 
#> AIC: 11824.88

polr(wf606m_c ~ wa4+ cfps_gender + cfps2014_age+ cfps2014edu, data = aa, Hess = TRUE) %>%
    summary()
#> Call:
#> polr(formula = wf606m_c ~ wa4 + cfps_gender + cfps2014_age + 
#>     cfps2014edu, data = aa, Hess = TRUE)
#> 
#> Coefficients:
#>                  Value Std. Error t value
#> wa4           0.126907    0.03346  3.7928
#> cfps_gender  -0.093784    0.05483 -1.7105
#> cfps2014_age -0.004619    0.01637 -0.2821
#> cfps2014edu  -0.154858    0.07172 -2.1592
#> 
#> Intercepts:
#>     Value   Std. Error t value
#> 1|2 -0.8809  0.1349    -6.5295
#> 2|3 -0.2433  0.1343    -1.8118
#> 3|4  0.4470  0.1344     3.3253
#> 4|5  2.4543  0.1434    17.1180
#> 
#> Residual Deviance: 12806.06 
#> AIC: 12822.06

#broom::tidy(mod_mass)