degrees_of_freedom | R Documentation |
Estimate or extract degrees of freedom of models parameters.
degrees_of_freedom(model, ...)
## Default S3 method:
degrees_of_freedom(model, method = "analytical", ...)
dof(model, ...)
model |
A statistical model. |
... |
Currently not used. |
method |
Can be |
Methods for calculating degrees of freedom:
"analytical"
for models of class lmerMod
, 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 returns
Inf
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 class lmerMod
. Instead, always uses n-k
to calculate df
for any model.
"normal"
returns Inf
.
"wald"
returns residual df for models with t-statistic, and Inf
for all other models.
"kenward"
calls dof_kenward()
.
"satterthwaite"
calls dof_satterthwaite()
.
"ml1"
calls dof_ml1()
.
"betwithin"
calls dof_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.
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.
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)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.