Рассмотрим различные распределения, о которых мы говорили во время регрессионного анализа, и проведем с ними численные эксперименты с помощью R. Данные материал должен пригодится для дальнейшего понимания.
Дополнительно рассмотрен вопрос проведения теста Колмогорова-Смирнова в R.
1. Нормальное распределение.
library(vioplot)
## Loading required package: sm
## Package 'sm', version 2.2-5.4: type help(sm) for summary information
library(beanplot)
set.seed(2016)
n1 <- rnorm(300)
# Следующая команда позволяет поместить 4 графика в 1
layout(matrix(c(1,2,3,4), 2, 2, byrow = F), respect = TRUE)
dotchart(n1,pch=19,main="Диаграмма Кливленда")
vioplot(n1)
qqnorm(n1)
qqline(n1)
beanplot(n1)
2. Сумма двух нормальных распределений дает нормальное распределение
n2 <- rnorm(300)
d1 <- n1+n2
dotchart(d1,pch=19,main="Диаграмма Кливленда")
vioplot(d1)
qqnorm(d1)
qqline(d1)
beanplot(d1)
shapiro.test(d1)
##
## Shapiro-Wilk normality test
##
## data: d1
## W = 0.99418, p-value = 0.3075
Для проведения теста Колмогорова-Смирнова нужно знать параметры распределения. Матожидание суммы нормальных распредений равно сумме матожиданий, а дисперсия равна сумме дисперсий. Для суммы двух стандартных распределений имеем: \(\mathcal {N}(0,1)+\mathcal {N}(0,1) \equiv \mathcal {N}(0,\sqrt2)\)
ks.test(d1,"pnorm",0,sqrt(2))
##
## One-sample Kolmogorov-Smirnov test
##
## data: d1
## D = 0.048879, p-value = 0.4705
## alternative hypothesis: two-sided
3. Распределение Хи-квадрат
Сумма квадратов стандартных нормальных распределений дает распределение хи-квадрат со степенью свободы, равной числу слагаемых.
d2 <- n1^2+n2^2
dotchart(d2,pch=19,main="Диаграмма Кливленда")
vioplot(d2)
qqnorm(d2)
qqline(d2)
beanplot(d2)
## log="y" selected
Сравним распределение с теоретическим \(\chi^2\) с двумя степенями свободы:
ks.test(d2,"pchisq",2)
##
## One-sample Kolmogorov-Smirnov test
##
## data: d2
## D = 0.031144, p-value = 0.933
## alternative hypothesis: two-sided
qqplot(qchisq(ppoints(500), df = 2), d2)
qqline(d2, distribution = function(p) qchisq(p, df = 2),
prob = c(0.1, 0.6), col = 2)
Из определения получаем моменты распределения хи-квадрат. Если \(Y \sim \chi ^{2}(k) \), то \(\mathbb {E} [Y]=k=2, \mathrm {D} [Y]=2k=4 \).
mean(d2)
## [1] 1.961553
var(d2)
## [1] 3.913262
Также известно, что распределение хи-квадрат с двумя степенями свободы совпадает с экспоненциальным распределением: \( \chi ^{2}(2)\equiv \mathrm {Exp} (1/2) \).
ks.test(d2,"pexp",1/2)
##
## One-sample Kolmogorov-Smirnov test
##
## data: d2
## D = 0.031144, p-value = 0.933
## alternative hypothesis: two-sided
4. Распределение Фишера
Если \(Y_{1}\sim \chi ^{2}(k_{1})\) и \(Y_{2}\sim \chi ^{2}(k_{2})\) , то случайная величина
\[F=\frac {Y_{1}/k_{1}}{Y_{2}/k_{2}}\]
имеет распределение Фишера со степенями свободы \((k_{1},k_{2})\)
k1<-2
k2<-3
y1<-rchisq(300,k1)
y2<-rchisq(300,k2)
F0<-(y1/k1)/(y2/k2)
dotchart(F0,pch=19,main="Диаграмма Кливленда")
vioplot(F0)
qqnorm(F0)
qqline(F0)
beanplot(F0)
## log="y" selected
ks.test(F0,"pf",k1,k2)
##
## One-sample Kolmogorov-Smirnov test
##
## data: F0
## D = 0.034401, p-value = 0.8697
## alternative hypothesis: two-sided
5. Распределение Стьюдента
Пусть \(Y_{0},Y_{1},\ldots ,Y_{n}\) — независимые стандартные нормальные случайные величины, такие что \(Y_{i}\sim {\mathcal {N}}(0,1),\;i=0,\ldots ,n\). Тогда распределение случайной величины t, где
\[t={\frac {Y_{0}}{\sqrt {{\frac {1}{n}}\sum \limits _{i=1}^{n}Y_{i}^{2}}}}={\frac {Y_{0}}{\sqrt {{\frac {1}{n}}\chi ^{2}(n)}}},\] называется распределением Стьюдента с n степенями свободы \(t\sim \mathrm {t} (n)\).
y0<-rnorm(300)
y1<-rnorm(300)
y2<-rnorm(300)
t0<-y0/(sqrt((y1^2+y2^2)/2))
dotchart(t0,pch=19,main="Диаграмма Кливленда")
vioplot(t0)
qqnorm(t0)
qqline(t0)
beanplot(t0)
ks.test(t0,"pt",2)
##
## One-sample Kolmogorov-Smirnov test
##
## data: t0
## D = 0.051328, p-value = 0.4081
## alternative hypothesis: two-sided
Данные о параметрах R
sessionInfo()
## R version 3.3.1 (2016-06-21)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 7 x64 (build 7601) Service Pack 1
##
## locale:
## [1] LC_COLLATE=Russian_Russia.1251 LC_CTYPE=Russian_Russia.1251
## [3] LC_MONETARY=Russian_Russia.1251 LC_NUMERIC=C
## [5] LC_TIME=Russian_Russia.1251
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] beanplot_1.2 vioplot_0.2 sm_2.2-5.4
##
## loaded via a namespace (and not attached):
## [1] magrittr_1.5 formatR_1.4 tools_3.3.1 htmltools_0.3.5
## [5] yaml_2.1.13 Rcpp_0.12.7 stringi_1.1.2 rmarkdown_1.0
## [9] knitr_1.14 stringr_1.1.0 digest_0.6.10 evaluate_0.10