Home Â» A Guide to dt, qt, pt, & rt in R

# A Guide to dt, qt, pt, & rt in R

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 xÂ 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 #create a vector of values that shows the height of the probability distribution
#for each value in x, using 20 degrees of freedom
y #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:

## pt

The function ptÂ returns the value of the cumulative density function (cdf) of the Student t distribution given a certain random variable xÂ 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Â xÂ 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
```

Example 2:Â  Find the area to the right of a t-statistic with value of -0.785 and 14 degrees of freedom.

```#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 xÂ 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 t-Distribution table as well as the critical values that can be found by the Inverse t-Distribution Calculator.

## rt

The function rtÂ generates a vector of random variables that follow a Student t distribution given a vector lengthÂ nÂ 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 #generate a vector of 1000 random variables that follow a Student t distribution
#with df = 5
wideDistribution #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:

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.