| 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 returnsInfif 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-kto calculate df for any model. -
"normal"returnsInf. -
"wald"returns residual df for models with t-statistic, andInffor 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)
}