# 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 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)

# 0.3939886

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

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

# 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: ## 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)

# 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)

# 0.7772325

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

# 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)

# 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)

#   2.527977

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

#  1.724718

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

#  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 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.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: 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.