t_test {sjstats} | R Documentation |
Student's t test
Description
This function performs a Student's t test for two independent samples, for paired samples, or for one sample. It's a parametric test for the null hypothesis that the means of two independent samples are equal, or that the mean of one sample is equal to a specified value. The hypothesis can be one- or two-sided.
Unlike the underlying base R function t.test()
, this function allows for
weighted tests and automatically calculates effect sizes. Cohen's d is
returned for larger samples (n > 20), while Hedges' g is returned for
smaller samples.
Usage
t_test(
data,
select = NULL,
by = NULL,
weights = NULL,
paired = FALSE,
mu = 0,
alternative = "two.sided"
)
Arguments
data |
A data frame. |
select |
Name(s) of the continuous variable(s) (as character vector)
to be used as samples for the test.
|
by |
Name of the variable indicating the groups. Required if |
weights |
Name of an (optional) weighting variable to be used for the test. |
paired |
Logical, whether to compute a paired t-test for dependent samples. |
mu |
The hypothesized difference in means (for |
alternative |
A character string specifying the alternative hypothesis,
must be one of |
Details
Interpretation of effect sizes are based on rules described in
effectsize::interpret_cohens_d()
and effectsize::interpret_hedges_g()
.
Use these function directly to get other interpretations, by providing the
returned effect size (Cohen's d or Hedges's g in this case) as argument,
e.g. interpret_cohens_d(0.35, rules = "sawilowsky2009")
.
Value
A data frame with test results. Effectsize Cohen's d is returned for larger samples (n > 20), while Hedges' g is returned for smaller samples.
Which test to use
The following table provides an overview of which test to use for different types of data. The choice of test depends on the scale of the outcome variable and the number of samples to compare.
Samples | Scale of Outcome | Significance Test |
1 | binary / nominal | chi_squared_test() |
1 | continuous, not normal | wilcoxon_test() |
1 | continuous, normal | t_test() |
2, independent | binary / nominal | chi_squared_test() |
2, independent | continuous, not normal | mann_whitney_test() |
2, independent | continuous, normal | t_test() |
2, dependent | binary (only 2x2) | chi_squared_test(paired=TRUE) |
2, dependent | continuous, not normal | wilcoxon_test() |
2, dependent | continuous, normal | t_test(paired=TRUE) |
>2, independent | continuous, not normal | kruskal_wallis_test() |
>2, independent | continuous, normal | datawizard::means_by_group() |
>2, dependent | continuous, not normal | not yet implemented (1) |
>2, dependent | continuous, normal | not yet implemented (2) |
(1) More than two dependent samples are considered as repeated measurements.
For ordinal or not-normally distributed outcomes, these samples are
usually tested using a friedman.test()
, which requires the samples
in one variable, the groups to compare in another variable, and a third
variable indicating the repeated measurements (subject IDs).
(2) More than two dependent samples are considered as repeated measurements. For normally distributed outcomes, these samples are usually tested using a ANOVA for repeated measurements. A more sophisticated approach would be using a linear mixed model.
References
Bender, R., Lange, S., Ziegler, A. Wichtige Signifikanztests. Dtsch Med Wochenschr 2007; 132: e24–e25
du Prel, J.B., Röhrig, B., Hommel, G., Blettner, M. Auswahl statistischer Testverfahren. Dtsch Arztebl Int 2010; 107(19): 343–8
See Also
-
t_test()
for parametric t-tests of dependent and independent samples. -
mann_whitney_test()
for non-parametric tests of unpaired (independent) samples. -
wilcoxon_test()
for Wilcoxon rank sum tests for non-parametric tests of paired (dependent) samples. -
kruskal_wallis_test()
for non-parametric tests with more than two independent samples. -
chi_squared_test()
for chi-squared tests (two categorical variables, dependent and independent).
Examples
data(sleep)
# one-sample t-test
t_test(sleep, "extra")
# base R equivalent
t.test(extra ~ 1, data = sleep)
# two-sample t-test, by group
t_test(mtcars, "mpg", by = "am")
# base R equivalent
t.test(mpg ~ am, data = mtcars)
# paired t-test
t_test(mtcars, c("mpg", "hp"), paired = TRUE)
# base R equivalent
t.test(mtcars$mpg, mtcars$hp, data = mtcars, paired = TRUE)