What are dt, qt, pt, & rt in R?

Table of Contents

dt, qt, pt, and rt in R are functions to create and manipulate data frames, lists, and matrices. dt stands for dataframe, qt stands for qtl, pt stands for matrix, and rt stands for list. These functions can be used to create and manipulate data types such as numeric, character, and logical variables. They can also be used to create and manipulate objects like vectors, names, and factors.

The Student t distribution is one of the most commonly used distribution in statistics. This tutorial explains how to work with the Student t distribution in R using the functions dt()qt()pt(), and rt().

dt

The function dt returns the value of the probability density function (pdf) of the Student t distribution given a certain random variable and degrees of freedom df. The syntax for using dt is as follows:

dt(x, df) 

The following code illustrates a few examples of dt in action:

#find the value of the Student t distribution pdf at x = 0 with 20 degrees of freedom
dt(x = 0, df = 20)

#[1] 0.3939886

#by default, R assumes the first argument is x and the second argument is df
dt(0, 20)

#[1] 0.3939886
#find the value of the Student t distribution pdf at x = 1 with 30 degrees of freedom
dt(1, 30)

#[1] 0.2379933

Typically when you’re trying to solve questions about probability using the Student t distribution, you’ll often use pt instead of dt. One useful application of dt, however, is in creating a Student t distribution plot in R. The following code illustrates how to do so:

#Create a sequence of 100 equally spaced numbers between -4 and 4
x <- seq(-4, 4, length=100)

#create a vector of values that shows the height of the probability distribution
#for each value in x, using 20 degrees of freedom
y <- dt(x = x, df = 20)

#plot x and y as a scatterplot with connected lines (type = "l") and add
#an x-axis with custom labels
plot(x,y, type = "l", lwd = 2, axes = FALSE, xlab = "", ylab = "")
axis(1, at = -3:3, labels = c("-3s", "-2s", "-1s", "mean", "1s", "2s", "3s"))

This generates the following plot:

Student t Distribution plot in R

pt

The function pt returns the value of the cumulative density function (cdf) of the Student t distribution given a certain random variable and degrees of freedom df. The syntax for using pnorm is as follows:

pt(x, df) 

Put simply, pt returns the area to the left of a given value in the Student t distribution. If you’re interested in the area to the right of a given value x, you can simply add the argument lower.tail = FALSE

pt(x, df, lower.tail = FALSE) 

The following examples illustrates how to solve some probability questions using pt.

Example 1: Find the area to the left of a t-statistic with value of -0.785 and 14 degrees of freedom.

pt(-0.785, 14)

#[1] 0.2227675

#the following approaches produce equivalent results

#1 - area to the left
1 - pt(-0.785, 14)

#[1] 0.7772325

#area to the right
pt(-0.785, 14, lower.tail = FALSE)

#[1] 0.7772325 

Example 3:  Find the total area in a Student t distribution with 14 degrees of freedom that lies to the left of -0.785 or to the right of 0.785.

pt(-0.785, 14) + pt(0.785, 14, lower.tail = FALSE)

#[1] 0.4455351

qt

The function qt returns the value of the inverse cumulative density function (cdf) of the Student t distribution given a certain random variable and degrees of freedom df. The syntax for using qt is as follows:

qt(x, df) 

Put simply, you can use qt to find out what the t-score is of the pth quantile of the Student t distribution.

The following code illustrates a few examples of qt in action:

#find the t-score of the 99th quantile of the Student t distribution with df = 20
qt(.99, df = 20)

# [1] [1] 2.527977

#find the t-score of the 95th quantile of the Student t distribution with df = 20
qt(.95, df = 20)

# [1] 1.724718

#find the t-score of the 90th quantile of the Student t distribution with df = 20
qt(.9, df = 20)

# [1] 1.325341

Note that the critical values found by qt will match the critical values found in the as well as the critical values that can be found by the .

rt

The function rt generates a vector of random variables that follow a Student t distribution given a vector length and degrees of freedom df. The syntax for using rt is as follows:

rt(n, df) 

The following code illustrates a few examples of rt in action:

#generate a vector of 5 random variables that follow a Student t distribution
#with df = 20
rt(n = 5, df = 20)

#[1] -1.7422445  0.9560782  0.6635823  1.2122289 -0.7052825

#generate a vector of 1000 random variables that follow a Student t distribution
#with df = 40
narrowDistribution <- rt(1000, 40)

#generate a vector of 1000 random variables that follow a Student t distribution
#with df = 5
wideDistribution <- rt(1000, 5)

#generate two histograms to view these two distributions side by side, and specify
#50 bars in histogram,
par(mfrow=c(1, 2)) #one row, two columns
hist(narrowDistribution, breaks=50, xlim = c(-6, 4)) 
hist(wideDistribution, breaks=50, xlim = c(-6, 4))

This generates the following histograms:

Histogram of t distributions

Notice how the wide distribution is more spread out compared to the narrow distribution. This is because we specified the degrees of freedom in the wide distribution to be 5 compared to 40  in the narrow distribution. The fewer degrees of freedom, the wider the Student t distribution will be.

Further Reading:
A Guide to dnorm, pnorm, qnorm, and rnorm in R
A Guide to dbinom, pbinom, qbinom, and rbinom in R

x