# 必要なライブラリをロード
library(car)
## 要求されたパッケージ carData をロード中です
library(DT)
# カラーパレット(透過色)
COLS <- c(rgb(1, 0, 1, .25), # ピンク
rgb(0, 0, 1, .25), # ラベンダー
rgb(0, 1, 0, .25)) # グリーン
GRAY <- rgb(.5, .5, .5, .25) # グレー
# 乱数のシードを設定
set.seed(10)
# 標本サイズ
n <- 100
# 正規乱数とt乱数を生成
xn <- rnorm(n) # 正規乱数
xt <- rt(n, df = 10) # 自由度10のt乱数
# データの概要を表示
summary(data.frame(xn, xt))
## xn xt
## Min. :-2.1853 Min. :-2.0669
## 1st Qu.:-0.8291 1st Qu.:-0.5995
## Median :-0.1933 Median : 0.0516
## Mean :-0.1365 Mean : 0.1114
## 3rd Qu.: 0.5934 3rd Qu.: 0.8164
## Max. : 2.2205 Max. : 3.7912
# ヒストグラムの階級区切りを定義
bins <- seq(-3, 4, 1) # 階級区切り
# ヒストグラムをプロット
hist(xn, breaks = bins, col = COLS[1],
main = 'ヒストグラム 1',
xlab = '観測値',
ylab = '度数')

hist(xt, breaks = bins, col = COLS[2],
main = 'ヒストグラム 2',
xlab = '観測値',
ylab = '度数')

# 四分位数を計算
q1 <- quantile(xn, probs = c(1/4, 2/4, 3/4))
q2 <- quantile(xt, probs = c(1/4, 2/4, 3/4))
# 四分位数の散布図をプロット
matplot(x = q1, y = q2, pch = 16, ylim = c(-10,10),
main = '散布図(四分位数同士の比較)',
xlab = '標本1分位数',
ylab = '標本2分位数')
grid()
abline(a = 0, b = 10, col = 'red')

# Q-Qプロットの準備
p <- function(k) (k - 0.5) / n
k <- 1:n
q <- qnorm(p = p(k)) # 正規分位数
# 標本を順序付け
xn.o <- xn[order(xn)]
xt.o <- xt[order(xt)]
# Q-Qプロットをプロット
matplot(x = q, y = xn.o, type = 'n',
xlim = c(-4, 4),
ylim = c(-4, 4),
main = '正規Q-Qプロット',
xlab = '正規分位数',
ylab = '標本分位数')
matpoints(x = q, y = xn.o, pch = 16, col = COLS[1])
matpoints(x = q, y = xt.o, pch = 16, col = COLS[2])
abline(a = 0, b = 1, col = 'red')
legend('topleft', col = COLS[1:2], pch = 16,
legend = c('標本1(正規乱数)', '標本2(t乱数)'))

# carパッケージを用いたQ-Qプロット
qqPlot(xn,
main = 'N(0, 1)',
xlab = '正規分位数',
ylab = '標本分位数')

## [1] 88 54
qqPlot(xt,
main = 't(d.f.=10)',
xlab = '正規分位数',
ylab = '標本分位数')

## [1] 52 49
# Shapiro-Wilk正規性検定を実施
shapiro.test(xn)
##
## Shapiro-Wilk normality test
##
## data: xn
## W = 0.98908, p-value = 0.5911
shapiro.test(xt)
##
## Shapiro-Wilk normality test
##
## data: xt
## W = 0.96269, p-value = 0.006286