Октябрь 19

Немного о непрерывных распределениях

Рассмотрим различные распределения, о которых мы говорили во время регрессионного анализа, и проведем с ними численные эксперименты с помощью 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)

c2254d49-7c77-4cda-9701-16ad82abe7a92. Сумма двух нормальных распределений дает нормальное распределение

n2 <- rnorm(300)
d1 <- n1+n2
dotchart(d1,pch=19,main="Диаграмма Кливленда")

a0d2f007-e602-4668-a3e3-8df0f7c59d5c

vioplot(d1)

a2ff4b6c-c17b-4628-aa55-88d40ecd673f

qqnorm(d1)
qqline(d1)

c09273b9-38ef-4bd9-95f6-1879b750cb50

beanplot(d1)

d49ace67-e315-4f6b-8766-cdcd6fc6d74a

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="Диаграмма Кливленда")

d8c092d7-22cb-4cb1-93ea-b28aeea620d3

vioplot(d2)

f95f7804-400b-407e-b3bf-945a0ed6cbb2

qqnorm(d2)
qqline(d2)

d6972e1c-4c80-4c9c-a50e-e0793f2800c9

beanplot(d2)
## log="y" selected

8782a27b-00c0-4bfd-ac0d-61060113f827

Обратите внимание, что на последнем графике использована логарифмическая шкала

Сравним распределение с теоретическим \(\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)

0318afa7-81b8-4a8a-b802-6b0b1abd4326Из определения получаем моменты распределения хи-квадрат. Если \(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="Диаграмма Кливленда")

65e4f311-2fd8-4a2e-9dcd-73b814af4c69

vioplot(F0)

bad86e00-f836-4f1a-b35a-a368b1841101

qqnorm(F0)
qqline(F0)

9af1f7fc-daf8-4d87-ac41-194f7256e508

beanplot(F0)
## log="y" selected

9dea9ac5-efda-4f62-a8b6-70baacbb6fda

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="Диаграмма Кливленда")

4dbf59a5-9353-4337-b25c-289dfc033e44

vioplot(t0)

5a34804b-7384-4171-a6bb-7f7b68325426

qqnorm(t0)
qqline(t0)

a1e739e6-4859-43d1-b753-95bbfc8fcf29

beanplot(t0)

6dafcff5-03c7-4624-b1fe-86156b110dfa

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

 

Протокол в формате Rmd доступен по ссылке.

Метки:

Опубликовано 19.10.2016 Тушавин В.А. в категории "Изучаем R и RStudio