##################################################
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
#> ------------------------------------