degrees_of_freedom {parameters} | R Documentation |
Degrees of Freedom (DoF)
Description
Estimate or extract degrees of freedom of models parameters.
Usage
degrees_of_freedom(model, ...)
## Default S3 method:
degrees_of_freedom(model, method = "analytical", ...)
dof(model, ...)
Arguments
model |
A statistical model. |
... |
Currently not used. |
method |
Can be |
Details
Methods for calculating degrees of freedom:
-
"analytical"
for models of classlmerMod
, Kenward-Roger approximated degrees of freedoms are calculated, for other models,n-k
(number of observations minus number of parameters). -
"residual"
tries to extract residual degrees of freedom, and returnsInf
if residual degrees of freedom could not be extracted. -
"any"
first tries to extract residual degrees of freedom, and if these are not available, extracts analytical degrees of freedom. -
"nokr"
same as"analytical"
, but does not Kenward-Roger approximation for models of classlmerMod
. Instead, always usesn-k
to calculate df for any model. -
"normal"
returnsInf
. -
"wald"
returns residual df for models with t-statistic, andInf
for all other models. -
"kenward"
callsdof_kenward()
. -
"satterthwaite"
callsdof_satterthwaite()
. -
"ml1"
callsdof_ml1()
. -
"betwithin"
callsdof_betwithin()
.
For models with z-statistic, the returned degrees of freedom for model parameters
is Inf
(unless method = "ml1"
or method = "betwithin"
), because there is
only one distribution for the related test statistic.
Note
In many cases, degrees_of_freedom()
returns the same as df.residuals()
,
or n-k
(number of observations minus number of parameters). However,
degrees_of_freedom()
refers to the model's parameters degrees of freedom
of the distribution for the related test statistic. Thus, for models with
z-statistic, results from degrees_of_freedom()
and df.residuals()
differ.
Furthermore, for other approximation methods like "kenward"
or
"satterthwaite"
, each model parameter can have a different degree of
freedom.
Examples
model <- lm(Sepal.Length ~ Petal.Length * Species, data = iris)
dof(model)
model <- glm(vs ~ mpg * cyl, data = mtcars, family = "binomial")
dof(model)
if (require("lme4", quietly = TRUE)) {
model <- lmer(Sepal.Length ~ Petal.Length + (1 | Species), data = iris)
dof(model)
}
if (require("rstanarm", quietly = TRUE)) {
model <- stan_glm(
Sepal.Length ~ Petal.Length * Species,
data = iris,
chains = 2,
refresh = 0
)
dof(model)
}