wbgee {panelr} | R Documentation |
Panel regression models fit with GEE
Description
Fit "within-between" and several other regression variants for panel data via generalized estimating equations.
Usage
wbgee(
formula,
data,
id = NULL,
wave = NULL,
model = "w-b",
cor.str = c("ar1", "exchangeable", "unstructured"),
detrend = FALSE,
use.wave = FALSE,
wave.factor = FALSE,
min.waves = 2,
family = gaussian,
balance.correction = FALSE,
dt.random = TRUE,
dt.order = 1,
weights = NULL,
offset = NULL,
interaction.style = c("double-demean", "demean", "raw"),
scale = FALSE,
scale.response = FALSE,
n.sd = 1,
calc.fit.stats = TRUE,
...
)
Arguments
formula |
Model formula. See details for crucial
info on |
data |
The data, either a |
id |
If |
wave |
If |
model |
One of |
cor.str |
Any correlation structure accepted by |
detrend |
Adjust within-subject effects for trends in the predictors? Default is FALSE, but some research suggests this is a better idea (see Curran and Bauer (2011) reference). |
use.wave |
Should the wave be included as a predictor? Default is FALSE. |
wave.factor |
Should the wave variable be treated as an unordered factor instead of continuous? Default is FALSE. |
min.waves |
What is the minimum number of waves an individual must
have participated in to be included in the analysis? Default is |
family |
Use this to specify GLM link families. Default is |
balance.correction |
Correct between-subject effects for unbalanced panels following the procedure in Curran and Bauer (2011)? Default is FALSE. |
dt.random |
Should the detrending procedure be performed with a random slope for each entity? Default is TRUE but for short panels FALSE may be better, fitting a trend for all entities. |
dt.order |
If detrending using |
weights |
If using weights, either the name of the column in the data that contains the weights or a vector of the weights. |
offset |
this can be used to specify an a priori known
component to be included in the linear predictor during
fitting. This should be |
interaction.style |
The best way to calculate interactions in within
models is in some dispute. The conventional way ( |
scale |
If |
scale.response |
Should the response variable also be rescaled? Default
is |
n.sd |
How many standard deviations should you divide by for standardization? Default is 1, though some prefer 2. |
calc.fit.stats |
Calculate fit statistics? Default is TRUE, but occasionally poor-fitting models might trip up here. |
... |
Additional arguments provided to |
Details
See the documentation for wbm()
for many details on formula syntax and
other arguments.
Value
A wbgee
object, which inherits from geeglm
.
Author(s)
Jacob A. Long
References
Allison, P. (2009). Fixed effects regression models. Thousand Oaks, CA: SAGE Publications. https://doi.org/10.4135/9781412993869.d33
Bell, A., & Jones, K. (2015). Explaining fixed effects: Random effects modeling of time-series cross-sectional and panel data. Political Science Research and Methods, 3, 133–153. https://doi.org/10.1017/psrm.2014.7
Curran, P. J., & Bauer, D. J. (2011). The disaggregation of within-person and between-person effects in longitudinal models of change. Annual Review of Psychology, 62, 583–619. https://doi.org/10.1146/annurev.psych.093008.100356
Giesselmann, M., & Schmidt-Catran, A. W. (2020). Interactions in fixed effects regression models. Sociological Methods & Research, 1–28. https://doi.org/10.1177/0049124120914934
McNeish, D. (2019). Effect partitioning in cross-sectionally clustered data without multilevel models. Multivariate Behavioral Research, Advance online publication. https://doi.org/10.1080/00273171.2019.1602504
McNeish, D., Stapleton, L. M., & Silverman, R. D. (2016). On the unnecessary ubiquity of hierarchical linear modeling. Psychological Methods, 22, 114-140. https://doi.org/10.1037/met0000078
Schunck, R., & Perales, F. (2017). Within- and between-cluster effects in
generalized linear mixed models: A discussion of approaches and the
xthybrid
command. The Stata Journal, 17, 89–115.
https://doi.org/10.1177/1536867X1701700106
Examples
if (requireNamespace("geepack")) {
data("WageData")
wages <- panel_data(WageData, id = id, wave = t)
model <- wbgee(lwage ~ lag(union) + wks | blk + fem | blk * lag(union),
data = wages)
summary(model)
}