The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
To add support for you model, create a new .anova_es()
method function. This functions should generally do 3 things:
The input data frame must have these columns: -
Parameter
(char) - The name of the parameter or, more
often, the term. - Sum_Squares
(num) - The sum of squares.
- df
(num) - The degrees of freedom associated with the
Sum_Squares
. - Mean_Square_residuals
(num;
optional) - if not present, is calculated as
Sum_Squares / df
. (Any other column is ignored.)
And exactly 1 row Where Parameter
is
Residual
.
Optionally, one of the rows can have a (Intercept)
value
for Parameter
.
An example of a minimally valid data frame:
min_aov <- data.frame(
Parameter = c("(Intercept)", "A", "B", "Residuals"),
Sum_Squares = c(30, 40, 10, 100),
df = c(1, 1, 2, 50)
)
Pass the data frame to .es_aov_simple()
:
.es_aov_simple(
min_aov,
type = "eta", partial = TRUE, generalized = FALSE,
include_intercept = FALSE,
ci = 0.95, alternative = "greater",
verbose = TRUE
)
> Parameter Eta2_partial CI CI_low CI_high
> 1 A 0.286 0.95 0.12 1
> 2 B 0.091 0.95 0.00 1
The output is a data frame with the columns: Parameter
,
the effect size, and (optionally) CI
+ CI_low
+ CI_high
,
And with the following attributes: generalized
,
ci
, alternative
, anova_type
(NA
or NULL
), approximate
.
You can then set the anova_type
attribute to {1, 2, 3,
or NA
} and return the output.
(e.g., aovlist
models.)
The input data frame must have these columns:
Group
(char) - The strataParameter
(char)Sum_Squares
(num)df
(num)Mean_Square_residuals
(num; optional)And exactly 1 row per
Group
Where Parameter
is
Residual
.
Optionally, one of the rows can have a (Intercept)
value
for Parameter
.
An example of a minimally valid data frame:
min_aovlist <- data.frame(
Group = c("S", "S", "S:A", "S:A"),
Parameter = c("(Intercept)", "Residuals", "A", "Residuals"),
Sum_Squares = c(34, 21, 34, 400),
df = c(1, 12, 4, 30)
)
Pass the data frame to .es_aov_strata()
, along with a
list of predictors (including the stratifying variables) to the
DV_names
argument:
.es_aov_strata(
min_aovlist,
DV_names = c("S", "A"),
type = "omega", partial = TRUE, generalized = FALSE,
ci = 0.95, alternative = "greater",
verbose = TRUE,
include_intercept = TRUE
)
> Group Parameter Omega2_partial CI CI_low CI_high
> 1 S (Intercept) 0.57 0.95 0.21 1
> 2 S:A A 0.00 0.95 0.00 1
The output is a data frame with the columns: Group
,
Parameter
, the effect size, and (optionally)
CI
+ CI_low
+ CI_high
,
And with the following attributes: generalized
,
ci
, alternative
, approximate
.
You can then set the anova_type
attribute to {1, 2, 3,
or NA
} and return the output.
When sums of squares cannot be extracted, we can still get
approximate effect sizes based on the F_to_eta2()
family of functions.
The input data frame must have these columns:
Parameter
(char)F
(num) - The F test statistic.df
(num) - effect degrees of freedom.t
col instead, in which case
df
is set to 1, and F
is
t^2
).df_error
(num) - error degrees of freedom.Optionally, one of the rows can have (Intercept)
as the
Parameter
.
An example of a minimally valid data frame:
min_anova <- data.frame(
Parameter = c("(Intercept)", "A", "B"),
F = c(4, 7, 0.7),
df = c(1, 1, 2),
df_error = 34
)
Pass the table to .es_aov_table()
:
.es_aov_table(
min_anova,
type = "eta", partial = TRUE, generalized = FALSE,
include_intercept = FALSE,
ci = 0.95, alternative = "greater",
verbose = TRUE
)
> Parameter Eta2_partial CI CI_low CI_high
> 1 A 0.17 0.95 0.023 1
> 2 B 0.04 0.95 0.000 1
The output is a data frame with the columns: Parameter
,
the effect size, and (optionally) CI
+ CI_low
+ CI_high
,
And with the following attributes: generalized
,
ci
, alternative
, approximate
.
You can then set the anova_type
attribute to {1, 2, 3,
or NA
} and return the output, and optionally the
approximate
attribute, and return the output.
Let’s fit a simple linear model and change its class:
We now need a new .anova_es.superMODEL
function:
.anova_es.superMODEL <- function(model, ...) {
# Get ANOVA table
anov <- suppressWarnings(stats:::anova.lm(model))
anov <- as.data.frame(anov)
# Clean up
anov[["Parameter"]] <- rownames(anov)
colnames(anov)[2:1] <- c("Sum_Squares", "df")
# Pass
out <- .es_aov_simple(anov, ...)
# Set attribute
attr(out, "anova_type") <- 1
out
}
And… that’s it! Our new superMODEL
class of models is
fully supported!
> # Effect Size for ANOVA (Type I)
>
> Parameter | η² (partial) | 95% CI
> -----------------------------------------
> factor(cyl) | 0.76 | [0.61, 1.00]
> am | 0.12 | [0.00, 1.00]
>
> - One-sided CIs: upper bound fixed at [1.00].
> # Effect Size for ANOVA (Type I)
>
> Parameter | η² | 95% CI
> ---------------------------------
> factor(cyl) | 0.73 | [0.57, 1.00]
> am | 0.03 | [0.00, 1.00]
>
> - One-sided CIs: upper bound fixed at [1.00].
> # Effect Size for ANOVA (Type I)
>
> Parameter | ω² (partial) | 95% CI
> -----------------------------------------
> factor(cyl) | 0.73 | [0.56, 1.00]
> am | 0.08 | [0.00, 1.00]
>
> - One-sided CIs: upper bound fixed at [1.00].
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.