##################################################

library(panelr)
#> 필요한 패키지를 로딩중입니다: lme4
#> 필요한 패키지를 로딩중입니다: Matrix
#> 
#> 다음의 패키지를 부착합니다: 'panelr'
#> The following object is masked from 'package:stats':
#> 
#>     filter
data("WageData")
tail(WageData)
#>      exp wks occ ind south smsa ms fem union ed blk   lwage t  id
#> 4160   2  50   0   0     0    1  0   1     0 12   0 5.85793 2 595
#> 4161   3  50   0   0     0    1  0   1     0 12   0 5.95324 3 595
#> 4162   4  49   0   0     0    1  0   1     0 12   0 6.06379 4 595
#> 4163   5  50   0   0     0    1  0   1     0 12   0 6.21461 5 595
#> 4164   6  50   0   0     0    1  0   1     0 12   0 6.29157 6 595
#> 4165   7  50   0   0     0    1  0   1     0 12   0 6.37161 7 595
str(WageData)
#> 'data.frame':    4165 obs. of  14 variables:
#>  $ exp  : num  3 4 5 6 7 8 9 30 31 32 ...
#>  $ wks  : num  32 43 40 39 42 35 32 34 27 33 ...
#>  $ occ  : num  0 0 0 0 0 0 0 1 1 1 ...
#>  $ ind  : num  0 0 0 0 1 1 1 0 0 1 ...
#>  $ south: num  1 1 1 1 1 1 1 0 0 0 ...
#>  $ smsa : num  0 0 0 0 0 0 0 0 0 0 ...
#>  $ ms   : num  1 1 1 1 1 1 1 1 1 1 ...
#>  $ fem  : num  0 0 0 0 0 0 0 0 0 0 ...
#>  $ union: num  0 0 0 0 0 0 0 0 0 1 ...
#>  $ ed   : num  9 9 9 9 9 9 9 11 11 11 ...
#>  $ blk  : num  0 0 0 0 0 0 0 0 0 0 ...
#>  $ lwage: num  5.56 5.72 6 6 6.06 ...
#>  $ t    : num  1 2 3 4 5 6 7 1 2 3 ...
#>  $ id   : num  1 1 1 1 1 1 1 2 2 2 ...
#>  - attr(*, "datalabel")= chr ""
#>  - attr(*, "time.stamp")= chr "10 Jun 2016 08:48"
#>  - attr(*, "formats")= chr  "%9.0g" "%9.0g" "%9.0g" "%9.0g" ...
#>  - attr(*, "types")= int  254 254 254 254 254 254 254 254 254 254 ...
#>  - attr(*, "val.labels")= chr  "" "" "" "" ...
#>  - attr(*, "var.labels")= chr  "" "" "" "" ...
#>  - attr(*, "expansion.fields")=List of 6
#>   ..$ : chr  "_dta" "iis" "id"
#>   ..$ : chr  "_dta" "tis" "t"
#>   ..$ : chr  "_dta" "_TSitrvl" "1"
#>   ..$ : chr  "_dta" "_TSdelta" "+1.0000000000000X+000"
#>   ..$ : chr  "_dta" "_TSpanel" "id"
#>   ..$ : chr  "_dta" "_TStvar" "t"
#>  - attr(*, "version")= int 12

wages <- panel_data(WageData, id = id, wave = t)
wages
#> # Panel data:    4,165 x 14
#> # entities:      id [595]
#> # wave variable: t [1, 2, 3, ... (7 waves)]
#>    id        t   exp   wks   occ   ind south  smsa    ms   fem union    ed
#>    <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#>  1 1         1     3    32     0     0     1     0     1     0     0     9
#>  2 1         2     4    43     0     0     1     0     1     0     0     9
#>  3 1         3     5    40     0     0     1     0     1     0     0     9
#>  4 1         4     6    39     0     0     1     0     1     0     0     9
#>  5 1         5     7    42     0     1     1     0     1     0     0     9
#>  6 1         6     8    35     0     1     1     0     1     0     0     9
#>  7 1         7     9    32     0     1     1     0     1     0     0     9
#>  8 2         1    30    34     1     0     0     0     1     0     0    11
#>  9 2         2    31    27     1     0     0     0     1     0     0    11
#> 10 2         3    32    33     1     1     0     0     1     0     1    11
#> # ... with 4,155 more rows, and 2 more variables: blk <dbl>, lwage <dbl>

library(dplyr)
#> 
#> 다음의 패키지를 부착합니다: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
wages %>% 
  mutate(
    wks_mean = mean(wks), # this is the person-level mean
    wks_lag = lag(wks), # this will have a value of NA when t = 1
    cumu_wages = cumsum(exp(lwage)) # cumulative summation works within person
  ) %>%
  select(wks, wks_mean, wks_lag, lwage, cumu_wages) 
#> # Panel data:    4,165 x 7
#> # entities:      id [595]
#> # wave variable: t [1, 2, 3, ... (7 waves)]
#>    id        t   wks wks_mean wks_lag lwage cumu_wages
#>    <fct> <dbl> <dbl>    <dbl>   <dbl> <dbl>      <dbl>
#>  1 1         1    32     37.6      NA  5.56       260.
#>  2 1         2    43     37.6      32  5.72       565.
#>  3 1         3    40     37.6      43  6.00       967.
#>  4 1         4    39     37.6      40  6.00      1369.
#>  5 1         5    42     37.6      39  6.06      1798.
#>  6 1         6    35     37.6      42  6.17      2278.
#>  7 1         7    32     37.6      35  6.24      2793.
#>  8 2         1    34     31.6      NA  6.16       475.
#>  9 2         2    27     31.6      34  6.21       975.
#> 10 2         3    33     31.6      27  6.26      1500.
#> # ... with 4,155 more rows

wages["wks"]
#> # Panel data:    4,165 x 3
#> # entities:      id [595]
#> # wave variable: t [1, 2, 3, ... (7 waves)]
#>    id        t   wks
#>    <fct> <dbl> <dbl>
#>  1 1         1    32
#>  2 1         2    43
#>  3 1         3    40
#>  4 1         4    39
#>  5 1         5    42
#>  6 1         6    35
#>  7 1         7    32
#>  8 2         1    34
#>  9 2         2    27
#> 10 2         3    33
#> # ... with 4,155 more rows
wages["wage"] <- exp(wages[["lwage"]]) # note double brackets 

summary(wages, union, lwage)
#> 필요한 네임스페이스를 로딩합니다: skimr
#> Skim summary statistics
#>  n obs: 4165 
#>  n variables: 3 
#>  group variables: t 
#> 
#> -- Variable type:numeric ---------------------------------------------------------
#>  t variable missing complete   n mean   sd   p0  p25  p50  p75 p100
#>  1    lwage       0      595 595 6.38 0.39 5.01 6.12 6.42 6.65 6.91
#>  1    union       0      595 595 0.36 0.48 0    0    0    1    1   
#>  2    lwage       0      595 595 6.47 0.36 5.01 6.24 6.53 6.75 6.91
#>  2    union       0      595 595 0.35 0.48 0    0    0    1    1   
#>  3    lwage       0      595 595 6.6  0.45 4.61 6.33 6.61 6.86 8.27
#>  3    union       0      595 595 0.37 0.48 0    0    0    1    1   
#>  4    lwage       0      595 595 6.7  0.44 5.08 6.44 6.72 6.96 8.52
#>  4    union       0      595 595 0.37 0.48 0    0    0    1    1   
#>  5    lwage       0      595 595 6.79 0.42 5.27 6.51 6.8  7.04 8.1 
#>  5    union       0      595 595 0.37 0.48 0    0    0    1    1   
#>  6    lwage       0      595 595 6.86 0.42 5.66 6.6  6.91 7.11 8.16
#>  6    union       0      595 595 0.36 0.48 0    0    0    1    1   
#>  7    lwage       0      595 595 6.95 0.44 5.68 6.68 6.98 7.21 8.54
#>  7    union       0      595 595 0.37 0.48 0    0    0    1    1   
#>      hist
#>  <U+2581><U+2581><U+2582><U+2582><U+2585><U+2586><U+2587><U+2587>
#>  <U+2587><U+2581><U+2581><U+2581><U+2581><U+2581><U+2581><U+2585>
#>  <U+2581><U+2581><U+2581><U+2582><U+2582><U+2585><U+2586><U+2587>
#>  <U+2587><U+2581><U+2581><U+2581><U+2581><U+2581><U+2581><U+2585>
#>  <U+2581><U+2581><U+2581><U+2585><U+2587><U+2583><U+2581><U+2581>
#>  <U+2587><U+2581><U+2581><U+2581><U+2581><U+2581><U+2581><U+2585>
#>  <U+2581><U+2581><U+2583><U+2587><U+2586><U+2582><U+2581><U+2581>
#>  <U+2587><U+2581><U+2581><U+2581><U+2581><U+2581><U+2581><U+2585>
#>  <U+2581><U+2581><U+2582><U+2585><U+2587><U+2583><U+2581><U+2581>
#>  <U+2587><U+2581><U+2581><U+2581><U+2581><U+2581><U+2581><U+2585>
#>  <U+2581><U+2582><U+2583><U+2586><U+2587><U+2583><U+2581><U+2581>
#>  <U+2587><U+2581><U+2581><U+2581><U+2581><U+2581><U+2581><U+2585>
#>  <U+2581><U+2582><U+2585><U+2587><U+2586><U+2582><U+2581><U+2581>
#>  <U+2587><U+2581><U+2581><U+2581><U+2581><U+2581><U+2581><U+2585>

line_plot(wages, lwage)

line_plot(wages, lwage, add.mean = TRUE, alpha = 0.2)


##
library(haven)
penn <- read_dta("http://www.stata-press.com/data/r13/pennxrate.dta")
penn <- panel_data(penn, id = country, wave = year)
penn
#> # Panel data:    5,134 x 10
#> # entities:      country [151]
#> # wave variable: year [1970, 1971, 1972, ... (34 waves)]
#>    country  year xrate   ppp    id  capt realxrate lnrxrate  oecd    g7
#>    <fct>   <dbl> <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl> <dbl> <dbl>
#>  1 AFG      1970  45   10.8      1    34     1         0        0     0
#>  2 AFG      1971  45   11.2      1    34     0.250    -1.39     0     0
#>  3 AFG      1972  45    9.58     1    34     0.213    -1.55     0     0
#>  4 AFG      1973  45    8.94     1    34     0.199    -1.62     0     0
#>  5 AFG      1974  45    9.52     1    34     0.211    -1.55     0     0
#>  6 AFG      1975  45    9.12     1    34     0.203    -1.60     0     0
#>  7 AFG      1976  45    8.97     1    34     0.199    -1.61     0     0
#>  8 AFG      1977  45    9.33     1    34     0.207    -1.57     0     0
#>  9 AFG      1978  45    9.44     1    34     0.210    -1.56     0     0
#> 10 AFG      1979  43.7  9.54     1    34     0.218    -1.52     0     0
#> # ... with 5,124 more rows
line_plot(penn, realxrate)


line_plot(penn, realxrate, overlay = FALSE, 
          subset.ids = filter(penn, g7 == 1)$country, add.mean = TRUE)


line_plot(penn, realxrate, overlay = FALSE, 
          subset.ids = filter(penn, g7 == 1)$country,
          add.mean = TRUE, mean.function = "loess")


wages
#> # Panel data:    4,165 x 15
#> # entities:      id [595]
#> # wave variable: t [1, 2, 3, ... (7 waves)]
#>    id        t   exp   wks   occ   ind south  smsa    ms   fem union    ed
#>    <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#>  1 1         1     3    32     0     0     1     0     1     0     0     9
#>  2 1         2     4    43     0     0     1     0     1     0     0     9
#>  3 1         3     5    40     0     0     1     0     1     0     0     9
#>  4 1         4     6    39     0     0     1     0     1     0     0     9
#>  5 1         5     7    42     0     1     1     0     1     0     0     9
#>  6 1         6     8    35     0     1     1     0     1     0     0     9
#>  7 1         7     9    32     0     1     1     0     1     0     0     9
#>  8 2         1    30    34     1     0     0     0     1     0     0    11
#>  9 2         2    31    27     1     0     0     0     1     0     0    11
#> 10 2         3    32    33     1     1     0     0     1     0     1    11
#> # ... with 4,155 more rows, and 3 more variables: blk <dbl>, lwage <dbl>,
#> #   wage <dbl>
widen_panel(wages)
#> # A tibble: 595 x 74
#>    id      fem    ed   blk exp_1 wks_1 occ_1 ind_1 south_1 smsa_1  ms_1
#>    <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>   <dbl>  <dbl> <dbl>
#>  1 1         0     9     0     3    32     0     0       1      0     1
#>  2 2         0    11     0    30    34     1     0       0      0     1
#>  3 3         0    12     0     6    50     1     1       0      0     1
#>  4 4         1    10     1    31    52     1     0       0      1     0
#>  5 5         0    16     0    10    50     1     0       0      0     1
#>  6 6         0    12     0    26    44     1     1       0      1     1
#>  7 7         0    12     0    15    46     1     0       0      0     1
#>  8 8         0    10     0    23    51     1     1       1      0     1
#>  9 9         0    16     0     3    50     0     0       1      1     1
#> 10 10        0    16     0     3    49     0     0       1      1     1
#> # ... with 585 more rows, and 63 more variables: union_1 <dbl>,
#> #   lwage_1 <dbl>, wage_1 <dbl>, exp_2 <dbl>, wks_2 <dbl>, occ_2 <dbl>,
#> #   ind_2 <dbl>, south_2 <dbl>, smsa_2 <dbl>, ms_2 <dbl>, union_2 <dbl>,
#> #   lwage_2 <dbl>, wage_2 <dbl>, exp_3 <dbl>, wks_3 <dbl>, occ_3 <dbl>,
#> #   ind_3 <dbl>, south_3 <dbl>, smsa_3 <dbl>, ms_3 <dbl>, union_3 <dbl>,
#> #   lwage_3 <dbl>, wage_3 <dbl>, exp_4 <dbl>, wks_4 <dbl>, occ_4 <dbl>,
#> #   ind_4 <dbl>, south_4 <dbl>, smsa_4 <dbl>, ms_4 <dbl>, union_4 <dbl>,
#> #   lwage_4 <dbl>, wage_4 <dbl>, exp_5 <dbl>, wks_5 <dbl>, occ_5 <dbl>,
#> #   ind_5 <dbl>, south_5 <dbl>, smsa_5 <dbl>, ms_5 <dbl>, union_5 <dbl>,
#> #   lwage_5 <dbl>, wage_5 <dbl>, exp_6 <dbl>, wks_6 <dbl>, occ_6 <dbl>,
#> #   ind_6 <dbl>, south_6 <dbl>, smsa_6 <dbl>, ms_6 <dbl>, union_6 <dbl>,
#> #   lwage_6 <dbl>, wage_6 <dbl>, exp_7 <dbl>, wks_7 <dbl>, occ_7 <dbl>,
#> #   ind_7 <dbl>, south_7 <dbl>, smsa_7 <dbl>, ms_7 <dbl>, union_7 <dbl>,
#> #   lwage_7 <dbl>, wage_7 <dbl>

data("teen_poverty")
teen_poverty
#> # A tibble: 1,151 x 28
#>       id  pov1 mother1 spouse1 inschool1 hours1  pov2 mother2 spouse2
#>    <dbl> <dbl>   <dbl>   <dbl>     <dbl>  <dbl> <dbl>   <dbl>   <dbl>
#>  1    22     1       0       0         1     21     0       0       0
#>  2    75     0       0       0         1      8     0       0       0
#>  3    92     0       0       0         1     30     0       0       0
#>  4    96     0       0       0         0     19     1       1       0
#>  5   141     0       0       0         1      0     0       0       0
#>  6   161     0       0       0         1      0     0       0       0
#>  7   220     0       0       0         1      6     0       0       0
#>  8   229     0       0       0         1      0     1       0       0
#>  9   236     0       0       0         1      0     0       0       0
#> 10   240     0       0       0         1     18     1       0       0
#> # ... with 1,141 more rows, and 19 more variables: inschool2 <dbl>,
#> #   hours2 <dbl>, pov3 <dbl>, mother3 <dbl>, spouse3 <dbl>,
#> #   inschool3 <dbl>, hours3 <dbl>, pov4 <dbl>, mother4 <dbl>,
#> #   spouse4 <dbl>, inschool4 <dbl>, hours4 <dbl>, age <dbl>, black <dbl>,
#> #   pov5 <dbl>, mother5 <dbl>, spouse5 <dbl>, inschool5 <dbl>,
#> #   hours5 <dbl>
long_panel(teen_poverty, label_location = "end", periods = 1:5)
#> # Panel data:    5,755 x 9
#> # entities:      id [1151]
#> # wave variable: wave [1, 2, 3, ... (5 waves)]
#>    id     wave   age black   pov mother spouse inschool hours
#>    <fct> <dbl> <dbl> <dbl> <dbl>  <dbl>  <dbl>    <dbl> <dbl>
#>  1 22        1    16     0     1      0      0        1    21
#>  2 22        2    16     0     0      0      0        1    15
#>  3 22        3    16     0     0      0      0        1     3
#>  4 22        4    16     0     0      0      0        1     0
#>  5 22        5    16     0     0      0      0        1     0
#>  6 75        1    17     0     0      0      0        1     8
#>  7 75        2    17     0     0      0      0        1     0
#>  8 75        3    17     0     0      0      0        1     0
#>  9 75        4    17     0     0      0      0        1     4
#> 10 75        5    17     0     1      0      0        1     0
#> # ... with 5,745 more rows

teen <- long_panel(teen_poverty, label_location = "end", periods = 1:5)
model <- wbm(hours ~ spouse + mother + inschool, data = teen)
summary(model)
#> MODEL INFO:
#> Entities: 1151
#> Time periods: 1-5
#> Dependent variable: hours
#> Model type: Linear mixed effects
#> Specification: within-between
#> 
#> MODEL FIT:
#> AIC = 45755.31, BIC = 45815.23
#> Pseudo-R² (fixed effects) = 0.15
#> Pseudo-R² (total) = 0.35
#> Entity ICC = 0.23
#> 
#> WITHIN EFFECTS:
#> --------------------------------------------------------
#>                    Est.   S.E.   t val.      d.f.      p
#> -------------- -------- ------ -------- --------- ------
#> spouse            -1.22   0.83    -1.47   4601.00   0.14
#> mother            -6.52   0.74    -8.76   4601.00   0.00
#> inschool         -11.09   0.47   -23.65   4601.00   0.00
#> --------------------------------------------------------
#> 
#> BETWEEN EFFECTS:
#> ---------------------------------------------------------------
#>                           Est.   S.E.   t val.      d.f.      p
#> --------------------- -------- ------ -------- --------- ------
#> (Intercept)              20.38   0.76    26.87   1147.00   0.00
#> imean(spouse)            -1.53   1.29    -1.18   1147.00   0.24
#> imean(mother)            -9.83   0.90   -10.95   1147.00   0.00
#> imean(inschool)         -15.23   0.94   -16.27   1147.00   0.00
#> ---------------------------------------------------------------
#> 
#> p values calculated using Satterthwaite d.f.
#>  
#> RANDOM EFFECTS:
#> ------------------------------------
#>   Group      Parameter    Std. Dev. 
#> ---------- ------------- -----------
#>     id      (Intercept)     6.504   
#>  Residual                   11.74   
#> ------------------------------------

model <- wbm(hours ~ spouse + mother + inschool | black, data = teen)
summary(model)
#> MODEL INFO:
#> Entities: 1151
#> Time periods: 1-5
#> Dependent variable: hours
#> Model type: Linear mixed effects
#> Specification: within-between
#> 
#> MODEL FIT:
#> AIC = 45755.79, BIC = 45822.37
#> Pseudo-R² (fixed effects) = 0.15
#> Pseudo-R² (total) = 0.35
#> Entity ICC = 0.23
#> 
#> WITHIN EFFECTS:
#> --------------------------------------------------------
#>                    Est.   S.E.   t val.      d.f.      p
#> -------------- -------- ------ -------- --------- ------
#> spouse            -1.22   0.83    -1.47   4601.00   0.14
#> mother            -6.52   0.74    -8.76   4601.00   0.00
#> inschool         -11.09   0.47   -23.65   4601.00   0.00
#> --------------------------------------------------------
#> 
#> BETWEEN EFFECTS:
#> ---------------------------------------------------------------
#>                           Est.   S.E.   t val.      d.f.      p
#> --------------------- -------- ------ -------- --------- ------
#> (Intercept)              20.60   0.79    26.07   1146.00   0.00
#> imean(spouse)            -1.67   1.30    -1.29   1146.00   0.20
#> imean(mother)            -9.65   0.92   -10.54   1146.00   0.00
#> imean(inschool)         -15.15   0.94   -16.13   1146.00   0.00
#> black                    -0.52   0.51    -1.01   1146.00   0.31
#> ---------------------------------------------------------------
#> 
#> p values calculated using Satterthwaite d.f.
#>  
#> RANDOM EFFECTS:
#> ------------------------------------
#>   Group      Parameter    Std. Dev. 
#> ---------- ------------- -----------
#>     id      (Intercept)     6.504   
#>  Residual                   11.74   
#> ------------------------------------

model <- wbm(hours ~ spouse + mother + inschool | black | black * mother, data = teen)
summary(model)
#> MODEL INFO:
#> Entities: 1151
#> Time periods: 1-5
#> Dependent variable: hours
#> Model type: Linear mixed effects
#> Specification: within-between
#> 
#> MODEL FIT:
#> AIC = 45735.34, BIC = 45808.58
#> Pseudo-R² (fixed effects) = 0.15
#> Pseudo-R² (total) = 0.35
#> Entity ICC = 0.24
#> 
#> WITHIN EFFECTS:
#> --------------------------------------------------------
#>                    Est.   S.E.   t val.      d.f.      p
#> -------------- -------- ------ -------- --------- ------
#> spouse            -0.87   0.83    -1.05   4600.00   0.30
#> mother           -10.78   1.21    -8.92   4600.00   0.00
#> inschool         -11.01   0.47   -23.51   4600.00   0.00
#> --------------------------------------------------------
#> 
#> BETWEEN EFFECTS:
#> ---------------------------------------------------------------
#>                           Est.   S.E.   t val.      d.f.      p
#> --------------------- -------- ------ -------- --------- ------
#> (Intercept)              20.60   0.79    26.07   1146.00   0.00
#> imean(spouse)            -1.67   1.30    -1.29   1146.00   0.20
#> imean(mother)            -9.65   0.92   -10.54   1146.00   0.00
#> imean(inschool)         -15.15   0.94   -16.13   1146.00   0.00
#> black                    -0.52   0.51    -1.01   1146.00   0.31
#> ---------------------------------------------------------------
#> 
#> CROSS-LEVEL INTERACTIONS:
#> ----------------------------------------------------------
#>                      Est.   S.E.   t val.      d.f.      p
#> ------------------ ------ ------ -------- --------- ------
#> mother:black         6.34   1.42     4.47   4600.00   0.00
#> ----------------------------------------------------------
#> 
#> p values calculated using Satterthwaite d.f.
#>  
#> RANDOM EFFECTS:
#> ------------------------------------
#>   Group      Parameter    Std. Dev. 
#> ---------- ------------- -----------
#>     id      (Intercept)     6.512   
#>  Residual                   11.72   
#> ------------------------------------

vignette()

################################## panelr ex2

library(panelr)
data("teen_poverty")
teen_poverty
#> # A tibble: 1,151 x 28
#>       id  pov1 mother1 spouse1 inschool1 hours1  pov2 mother2 spouse2
#>    <dbl> <dbl>   <dbl>   <dbl>     <dbl>  <dbl> <dbl>   <dbl>   <dbl>
#>  1    22     1       0       0         1     21     0       0       0
#>  2    75     0       0       0         1      8     0       0       0
#>  3    92     0       0       0         1     30     0       0       0
#>  4    96     0       0       0         0     19     1       1       0
#>  5   141     0       0       0         1      0     0       0       0
#>  6   161     0       0       0         1      0     0       0       0
#>  7   220     0       0       0         1      6     0       0       0
#>  8   229     0       0       0         1      0     1       0       0
#>  9   236     0       0       0         1      0     0       0       0
#> 10   240     0       0       0         1     18     1       0       0
#> # ... with 1,141 more rows, and 19 more variables: inschool2 <dbl>,
#> #   hours2 <dbl>, pov3 <dbl>, mother3 <dbl>, spouse3 <dbl>,
#> #   inschool3 <dbl>, hours3 <dbl>, pov4 <dbl>, mother4 <dbl>,
#> #   spouse4 <dbl>, inschool4 <dbl>, hours4 <dbl>, age <dbl>, black <dbl>,
#> #   pov5 <dbl>, mother5 <dbl>, spouse5 <dbl>, inschool5 <dbl>,
#> #   hours5 <dbl>

#long_panel 변환 
teen <- long_panel(teen_poverty, begin = 1, end = 5, label_location = "end")
teen
#> # Panel data:    5,755 x 9
#> # entities:      id [1151]
#> # wave variable: wave [1, 2, 3, ... (5 waves)]
#>    id     wave   age black   pov mother spouse inschool hours
#>    <fct> <dbl> <dbl> <dbl> <dbl>  <dbl>  <dbl>    <dbl> <dbl>
#>  1 22        1    16     0     1      0      0        1    21
#>  2 22        2    16     0     0      0      0        1    15
#>  3 22        3    16     0     0      0      0        1     3
#>  4 22        4    16     0     0      0      0        1     0
#>  5 22        5    16     0     0      0      0        1     0
#>  6 75        1    17     0     0      0      0        1     8
#>  7 75        2    17     0     0      0      0        1     0
#>  8 75        3    17     0     0      0      0        1     0
#>  9 75        4    17     0     0      0      0        1     4
#> 10 75        5    17     0     1      0      0        1     0
#> # ... with 5,745 more rows
tail(teen)
#> # Panel data:    6 x 9
#> # entities:      id [2]
#> # wave variable: wave [1, 2, 3, ... (5 waves)]
#>   id     wave   age black   pov mother spouse inschool hours
#>   <fct> <dbl> <dbl> <dbl> <dbl>  <dbl>  <dbl>    <dbl> <dbl>
#> 1 12523     5    14     0     0      0      0        0     0
#> 2 12539     1    14     0     0      0      0        1     0
#> 3 12539     2    14     0     0      0      0        1     0
#> 4 12539     3    14     0     0      0      0        1     1
#> 5 12539     4    14     0     0      0      0        1     2
#> 6 12539     5    14     0     0      0      0        1     0


data("WageData")  # 원시 데이터가 이미 긴 형식 인 경우이 panel_data()함수를 사용하여 panel_data형식 으로 변환
wages <- panel_data(WageData, id = id, wave = t)

model <- wbm(lwage ~ wks + union + ms + occ | blk + fem, data = wages)
summary(model)
#> MODEL INFO:
#> Entities: 595
#> Time periods: 1-7
#> Dependent variable: lwage
#> Model type: Linear mixed effects
#> Specification: within-between
#> 
#> MODEL FIT:
#> AIC = 2036.78, BIC = 2119.13
#> Pseudo-R² (fixed effects) = 0.27
#> Pseudo-R² (total) = 0.69
#> Entity ICC = 0.57
#> 
#> WITHIN EFFECTS:
#> ----------------------------------------------------
#>                Est.   S.E.   t val.      d.f.      p
#> ----------- ------- ------ -------- --------- ------
#> wks            0.00   0.00     1.06   3566.00   0.29
#> union          0.06   0.03     2.53   3566.00   0.01
#> ms            -0.08   0.03    -2.57   3566.00   0.01
#> occ           -0.08   0.02    -3.32   3566.00   0.00
#> ----------------------------------------------------
#> 
#> BETWEEN EFFECTS:
#> ----------------------------------------------------------
#>                       Est.   S.E.   t val.     d.f.      p
#> ------------------ ------- ------ -------- -------- ------
#> (Intercept)           6.30   0.20    30.85   588.00   0.00
#> imean(wks)            0.01   0.00     2.25   588.00   0.02
#> imean(union)          0.15   0.03     4.67   588.00   0.00
#> imean(ms)             0.17   0.05     3.07   588.00   0.00
#> imean(occ)           -0.41   0.03   -13.31   588.00   0.00
#> blk                  -0.15   0.05    -2.81   588.00   0.01
#> fem                  -0.32   0.06    -4.96   588.00   0.00
#> ----------------------------------------------------------
#> 
#> p values calculated using Satterthwaite d.f.
#>  
#> RANDOM EFFECTS:
#> ------------------------------------
#>   Group      Parameter    Std. Dev. 
#> ---------- ------------- -----------
#>     id      (Intercept)    0.2992   
#>  Residual                  0.2589   
#> ------------------------------------