- For cases in which the proper lag structure is ambiguous, you
may now use the
partial.pre
argument todpm()
to use the strategy proposed by Allison (2022).
- The ability to do arbitrary variable transformations introduced 1.1.0 has
been made to actually work since
lavaan
does not allow non-syntactic variable names.
- Specifying interactions in model formulae is now supported. To make them
predetermined, just make sure one of the terms has the
pre()
tag surrounding it. Do not put the entire interaction insidepre()
. - You may now include sampling weights via the
weights
argument.
- Fixed a bug that caused an error when printing summaries for models with
y.free = TRUE
.
dpm()
now has thex.free
argument, which can allow predictor variables to have coefficients that vary by wave.dpm
objects now have aglance()
method for thebroom
package.- You can now get wave-by-wave coefficient tables when either
x.free
ory.free
are used withdpm()
.
This release contains several important updates and a 1.1.x release is likely to be the one submitted to CRAN.
- Fixed an error in models with no constants.
- Fixed an error that sometimes caused predetermined variables to be treated incorrectly. (Vague, I know)
- Summaries now include coefficients for each wave of the lagged DV(s) when
y.free
is TRUE.
- Models without lagged dependent variables are now supported (use
y.lag = 0
) - Variable transformations in the model formula are now supported
(e.g.,
y ~ scale(x)
). - You can now update
dpm
models withupdate
. dpm
objects now a have atidy
method via thebroom
package.
As a side note, there is now a testing suite in place to check models
for accuracy/consistency with xtdpdml
. That doesn't mean there will be no
bugs, but it should help prevent any regressions.
This is a major release with several breaking changes compared to the initial development release.
Most noticeably, the name of the package has been changed from clfe
to dpm
.
This was done to better reflect the scope of the package --- the
cross-lagged fixed effects specification (CFLE) is a special case of the
larger group of dynamic panel model (DPM) specifications availed to users of the
package.
Accordingly, what was once the clfe
function is now called dpm
.
Internally, the dpm
class is now an S4 object that contains the lavaan
class. This means that any method implemented for lavaan
objects that isn't
explicitly defined by this package should simply treat dpm
objects as if they
were lavaan
objects.
The summary
method now has more options and is more similar to lavaan
's
summary in that regard. Of course, the summary output is much cleaner and
more succinct.
The following arguments have been added to dpm()
:
y.lag
: Equivalent toxtdpdml
'sylag
. Specify which lags of the DV to use.y.free
: Equivalent toxtdpdml
'syfree
. Allow stability coefficients for the lagged DV to vary over time.fixed.effects
: Comparable toxtdpdml
'sre
. Use fixed effects (TRUE
) or random effects (FALSE
) specification.alpha.free
: Equivalent toxtdpdml
'salphafree
. Allow the fixed effects to vary over time.
- Added a
NEWS.md
file to track changes to the package.
The panelr
package was added as a
dependency, which has some downstream effects.
- The
panel_data
function now belongs topanelr
. - The
panel_data
object type now inherits fromtibble
, which has pluses and minuses but I believe more upside than downside. - The
WageData
example data is now part of thepanelr
package.