Выборочные числовые характеристики случайных величин. Оценка основных выборочных числовых характеристик в пакете R.
Теория:
Практика в R:
func.mean <- function() {
#Выборочное среднее для вектора
mean(trees$Girth)
[1] 13.24839
#Выборочное среднее для кадра данных
mean(trees)
#При отсутствующих значениях (na.rm=FALSE - NA, na.rm=TRUE - пропустит NA)
mean(c(1,2,NA))
[1] NA
mean(c(1,2,NA),na.rm=TRUE)
[1] 1.5
}
func.mediana <- function() {
#Выборочная медиана
median(trees$Girth)
}
func.quantile <- function() {
#Квантиль уровней 0, 25, 50, 75, 100 процентов - вероятность того, что нет значений выше
quantile(trees$Girth)
0% 25% 50% 75% 100%
8.30 11.05 12.90 15.25 20.60
#Квантиль уровней seq(0,1,0.1)
quantile(trees$Girth, seq(0,1,0.1))
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
8.3 10.5 11.0 11.2 11.4 12.9 13.7 14.2 16.3 17.9 20.6
}
func.var <- function() {
#Вычисление несмещенной выборочной дисперсии (тупо делится на n-1, а не на n) для кадра данных
var(trees)
#Для вектора
var(trees$Girth)
}
func.sqrt_disp <- function() {
#Вычисление среднеквадратичного отклонения
sd(trees$Girth)
}
func.diff <- function() {
#Находим min и max значения с помощью range и находим размах, используя diff
min_max = range(trees$Girth)
diff(min_max)
}
func.IQR <- function() {
#Выборочный междукваРтильный размах (между 1/4 и 3/4 кваНтилями)
IQR(trees$Girth)
}
Типы статистических данных. Частотные распределения. Маргинальные частотные распределения. Проблема нахождения выборочных числовых характеристик по группированным данным. Ее решение в пакете R.
Теория:
Практика в R:
Таблица частот cтроится функцией:
table(x,…)
На вход выборка или несколько выборок если хотим найти многомерное частотное распределение.
cut(x,br)
На входе выборка и массив из точек, которыми вся область значений выборки разбивается на интервалы. Функция возвращает не список x1,…,xN – т.е. выборку, а список интервалов, которым принадлежат x1,…,xN соответственно
x <- c(0,1,2,3,4,5,1,2,3,4,12,12,31,23,12,14,13,1,1,1,2,3)
range(x)
[1] 0 31
br <- seq(-1,31,4)
x.cut <- cut(x,br)
x.cut
[1] (-1,3] (-1,3] (-1,3] (-1,3] (3,7] (3,7] (-1,3] (-1,3] (-1,3] (3,7]
[11] (11,15] (11,15] (27,31] (19,23] (11,15] (11,15] (11,15] (-1,3] (-1,3] (-1,3]
[21] (-1,3] (-1,3]
Levels: (-1,3] (3,7] (7,11] (11,15] (15,19] (19,23] (23,27] (27,31]
table(x.cut)
(-1,3] (3,7] (7,11] (11,15] (15,19] (19,23] (23,27] (27,31]
12 3 0 5 0 1 0 1
y<-c('a','v','a','s','s')
table(y)
y
A s v
2 2 1
Маргинальные частоты – для многомерных частотных распределений можно посчитать частоту по какому-то одному признаку или по нескольким. Пример:
attach(iris)
i.l <-cut(Sepal.Length,breaks=6)
i.w <-cut(Sepal.Width,breaks=6)
table(i.l,i.w)
I.w
i.l (2,2.4] (2.4,2.8] (2.8,3.2] (3.2,3.6] (3.6,4] (4,4.4]
(4.3,4.9] 2 1 14 5 0 0
(4.9,5.5] 5 4 3 15 8 2
(5.5,6.1] 2 17 13 1 2 1
(6.1,6.7] 2 10 17 6 0 0
(6.7,7.3] 0 1 11 1 0 0
(7.3,7.9] 0 3 2 0 2 0
table.i <-table(i.l,i.w)
margin.table(table.i,1)
I.l
(4.3,4.9] (4.9,5.5] (5.5,6.1] (6.1,6.7] (6.7,7.3] (7.3,7.9]
22 37 36 35 13 7
margin.table(table.i,2)
I.w
(2,2.4] (2.4,2.8] (2.8,3.2] (3.2,3.6] (3.6,4] (4,4.4]
11 36 60 28 12 3
Сначала построили таблицу частот по двум параметрам, потом посчитали маргинальные частоты по первому и второму признакам. По первому – просуммировали строки, по второму столбцы
Далее для трех признаков, и маргинальные частоты по 2-м из них
table(Species,i.l,i.w)->tb.i.sp
ftable(tb.i.sp)
i.w (2,2.4] (2.4,2.8] (2.8,3.2] (3.2,3.6] (3.6,4] (4,4.4]
Species i.l
setosa (4.3,4.9] 1 0 14 5 0 0
(4.9,5.5] 0 0 2 15 8 2
(5.5,6.1] 0 0 0 0 2 1
(6.1,6.7] 0 0 0 0 0 0
(6.7,7.3] 0 0 0 0 0 0
(7.3,7.9] 0 0 0 0 0 0
versicolor (4.3,4.9] 1 0 0 0 0 0
(4.9,5.5] 5 4 1 0 0 0
(5.5,6.1] 1 11 10 1 0 0
(6.1,6.7] 2 2 8 1 0 0
(6.7,7.3] 0 1 2 0 0 0
(7.3,7.9] 0 0 0 0 0 0
virginica (4.3,4.9] 0 1 0 0 0 0
(4.9,5.5] 0 0 0 0 0 0
(5.5,6.1] 1 6 3 0 0 0
(6.1,6.7] 0 8 9 5 0 0
(6.7,7.3] 0 0 9 1 0 0
(7.3,7.9] 0 3 2 0 2 0
margin.table(tb.i.sp,c(1,3))
I.w
Species (2,2.4] (2.4,2.8] (2.8,3.2] (3.2,3.6] (3.6,4] (4,4.4]
Setosa 1 0 16 20 10 3
Versicolor 9 18 21 2 0 0
Virginica 1 18 23 6 2 0
Проблема нахождения выборочных числовых характеристик по группированным данным.
То есть у нас вместо выборки таблица частот. Для поиска числовых характеристик требуются другие формулы они просты, но получается нужно переписывать все функции R для работы с выборками под группированные данные. Вместо этого создатели языка предложили следующее решение: по группированным данным, генерировать фиктивную выборку.
a<-rbinom(10,10,0.2)
mean(a)
[1] 1.7table(a)
a
0 1 2 3
1 3 4 2
rep(c(0,1,2,3),c(1,3,4,2))->a.fake
mean(a.fake)
[1] 1.7a.fake
[1] 0 1 1 1 2 2 2 2 3 3a
[1] 1 1 3 0 2 2 2 2 3 1