R подсказки названий функций для анализа данных
- Загрузка данных data<-read.csv(“/Users/crincum/Statistic/Data_Course1.csv”, sep=”;”,dec=”,”)
- Номинальные данные в выборках (0 или 1), превращаем в факторы, чтобы R понимала, что это не обычные значения, а номинальные data$IsGeo <- as.factor(data$IsGeo)
Как подсчитать основные меры вариативности?
- min, max, mean, median
- quantile – расчет квартилей
- var (x) – несмещенная дисперсия, рассчитанная для n-1
- sd (x) или sqrt(var(x)) – среднеквадратичное отклонение
- names(sort(-table(x)))[1] – мода или Modus
- IQR(x) – Среднеквадратичное отклонение
- mad(x, center = mean(x)) – AAD среднее абсолютное отклонение
- mad(x) – MAD среднее медианное отклонение
Проверка на нормальность данных
Если судя по графику функции распределения – распределение признака похоже на нормальное, то можно провести тест Шапиро-Уилка чтобы убедиться в этом:
shapiro.test(rnorm(data$test))
shapiro.test(FC)
##
## Shapiro-Wilk normality test
##
## data: FC
## W = 0.68423, p-value = 9.549e-12
Значение p-value очень маленькое. Это значит, что тест на нормальность не пройден.
Если по результатам теста p-value > 0.05, это дает нам предполагать нормальное распределение.
Остается предположение о логнормальности данных. Для того, чтобы проверить эту теорию, возьмем логарифм переменной и проведем тест Шапиро-Уилка уже для него.
shapiro.test(rnorm(data$test))
или
logFC<-log(FC)
shapiro.test(logFC)
##
## Shapiro-Wilk normality test
##
## data: logFC
## W = 0.98479, p-value = 0.4715
Значение p-value резко возросло и теперь свидетельствует о нормальности данных. Это значит, что преобразование сработало и распределение переменной FC – логнормальное, так как логарифм логнормального распределения – нормальное распределение.
Построим график распределения количества организаций, после перевода в нормальное
plot(density(logFC), main = "Логарифм распределения значений", xlab = "Количество", ylab = "Частота", col = "red")
Он уже должен больше напоминать нормальный.
Построение графиков плотности и распределения
plot(ecdf(dataCourse1$AddressCount))
plot(density(test,adjust=2))