The R software provides access to the t-distribution by the
dt()
, pt()
, qt()
and
rt()
functions. Apply the help()
function on
these functions for further information.
The rt()
function generates random deviates of the
t-distribution and is written as rt(n, df)
. We may
easily generate a number of n
random samples. Recall that
the number of degrees of freedom for a t-distribution is equal
to the sample size minus one, that is:
\[df = n - 1\text{.}\]
# generate n=30 random samples
n <- 30
df <- n - 1
rt(n, df)
## [1] 0.31952261 0.06290553 -0.35871793 -1.32967415 -0.05165391 -0.90241967
## [7] -0.54105759 0.36982695 0.30713892 -0.73883108 0.46213888 1.57162077
## [13] -0.46133279 -0.81859808 0.29733458 -1.61909097 0.60977141 2.28804954
## [19] 1.38906571 1.33296659 -0.95001223 -0.69176073 0.02499963 -1.31367313
## [25] -1.21794654 -1.29910772 0.42969864 -2.87398746 -0.41642019 -0.61221890
Further, we may generate a very large number of random samples and plot them as a histogram:
# generate n=10000 random samples
n <- 10000
df <- n - 1
samples <- rt(n, df)
hist(samples, breaks = "Scott", freq = FALSE)
Using the dt()
function we may calculate the probability
density function and thus, the vertical distance between the horizontal
axis and the t-curve at any point. For the purpose of
demonstration we construct a t-distribution with \(df=5\) and calculate the probability
density function at \(t =
-4,-2,0,2,4\).
x <- seq(-4, 4, by = 2)
dt(x, df = 5)
## [1] 0.005123727 0.065090310 0.379606690 0.065090310 0.005123727
Another very useful function is the pt()
function, which
returns the area under the t-curve for any given interval. Let
us calculate the area under the curve for the intervals \(j_i = (-\infty, -2], (-\infty, 0], (-\infty,
2]\) and \(k_i = [-2, \infty),[0,
\infty), [2, \infty)\) for a random variable following a
t-distribution with \(df=5\).
df <- 5
ji <- c(-2, 0, 2)
pt(ji, df = df, lower.tail = TRUE)
## [1] 0.05096974 0.50000000 0.94903026
df <- 5
ki <- c(-2, 0, 2)
pt(ki, df = df, lower.tail = FALSE)
## [1] 0.94903026 0.50000000 0.05096974
The qt()
function returns the quantile function and thus
is the reverse function of pt()
. For the intervals \(j_i = (-\infty, -2], (-\infty, 0], (-\infty,
2]\) of a random variable following a t-distribution
with \(df=5\), the qt()
function yields:
x <- seq(-2, 2, by = 2)
ji <- pt(x, df = 5, lower.tail = TRUE)
ji
## [1] 0.05096974 0.50000000 0.94903026
qt(ji, df = 5, lower.tail = TRUE)
## [1] -2 0 2
For the intervals \(k_i = [-2, \infty),[0,
\infty), [2, \infty)\) of a random variable following a
t-distribution with \(df=5\),
the qt()
function returns:
x <- seq(-2, 2, by = 2)
ki <- pt(x, df = 5, lower.tail = FALSE)
ki
## [1] 0.94903026 0.50000000 0.05096974
qt(ki, df = 5, lower.tail = FALSE)
## [1] -2 0 2
Citation
The E-Learning project SOGA-R was developed at the Department of Earth Sciences by Kai Hartmann, Joachim Krois and Annette Rudolph. You can reach us via mail by soga[at]zedat.fu-berlin.de.
Please cite as follow: Hartmann, K., Krois, J., Rudolph, A. (2023): Statistics and Geodata Analysis using R (SOGA-R). Department of Earth Sciences, Freie Universitaet Berlin.