ある自由度のt分布とその棄却域,p値の塗りつぶし,片側と両側の違いを比較した図です。

自由度18のt分布における棄却域と,t(18)=2.794のp値

library(tidyverse)
## ─ Attaching packages ──────────────────── tidyverse 1.3.1 ─
## ✓ ggplot2 3.3.3     ✓ purrr   0.3.4
## ✓ tibble  3.1.2     ✓ dplyr   1.0.6
## ✓ tidyr   1.1.3     ✓ stringr 1.4.0
## ✓ readr   1.4.0     ✓ forcats 0.5.1
## ─ Conflicts ───────────────────── tidyverse_conflicts() ─
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
# t分布の描画 ------------------------------------------------------------------
library(gridExtra)
## 
##  次のパッケージを付け加えます: 'gridExtra'
##  以下のオブジェクトは 'package:dplyr' からマスクされています: 
## 
##      combine
old = theme_set(theme_gray(base_family = "HiraKakuProN-W3"))

q <- qt(c(0.025,0.975),df=18)
ggplot(data = data.frame(X = c(-5, 5)), aes(x = X)) + stat_function(fun = dt, args = list(df = 18))+xlab("")+
  geom_ribbon(data=data.frame(X=x<-seq(q[1],q[2],len=101), Y=dt(x,df=18)), aes(x=X, ymin=0, ymax=Y),alpha=0.3)+
  geom_ribbon(data=data.frame(X=x<-seq(2.794003,5,len=101), Y=dt(x,df=18)), aes(x=X, ymin=0, ymax=Y),fill="red",alpha=0.8)

片側と両側の違い

# 片側と両側
p1 <- ggplot(data = data.frame(X = c(-5, 5)), aes(x = X)) + stat_function(fun = dt, args = list(df = 18))+xlab("")+
  geom_ribbon(data=data.frame(X=x<-seq(q[1],q[2],len=101), Y=dt(x,df=18)), aes(x=X, ymin=0, ymax=Y),alpha=0.3)

p2 <- ggplot(data = data.frame(X = c(-5, 5)), aes(x = X)) + stat_function(fun = dt, args = list(df = 18))+xlab("")+
  geom_ribbon(data=data.frame(X=x<-seq(-5,qt(0.95,df=18),len=101), Y=dt(x,df=18)), aes(x=X, ymin=0, ymax=Y),alpha=0.3)
  

grid.arrange(p1, p2, ncol = 1)