R - Среднее, медиана и мода
Здравствуйте,future R-программисты! Сегодня мы окунемся в мир описательной статистики с помощью R. Как ваш доброжелательный сосед по компьютерным наукам, я здесь, чтобы помочь вам понять концепции среднего, медианы и моды. Не волнуйтесь, если вы еще ни разу не писали строку кода – мы начнем с самого начала и будем двигаться вместе.
Среднее
Давайте начнем со среднего, которое, вероятно, является наиболее распространенным показателем central tendency. Простыми словами, это то, что мы часто называем "средним".
Базовый расчет среднего
Чтобы вычислить среднее в R, мы используем функцию mean()
. Вот простой пример:
numbers <- c(10, 20, 30, 40, 50)
result <- mean(numbers)
print(result)
Это выведет: 30
Давайте разберем это:
- Мы создаем вектор под названием
numbers
с помощью функцииc()
. - Мы используем функцию
mean()
для вычисления среднего этих чисел. - Мы сохраняем результат в переменную
result
. - Наконец, мы выводим результат.
Среднее с NA значениями
Теперь, что happens если у нас есть пропущенные данные, представленные NA
в R? Давайте посмотрим:
numbers_with_na <- c(10, 20, NA, 40, 50)
result_with_na <- mean(numbers_with_na)
print(result_with_na)
Это выведет: NA
Ой! R возвращает NA
, потому что он не знает, как обрабатывать пропущенное значение. Но не волнуйтесь, у нас есть решение!
Применение опции NA
Мы можем tell R игнорировать NA значения, используя опцию na.rm
:
numbers_with_na <- c(10, 20, NA, 40, 50)
result_na_removed <- mean(numbers_with_na, na.rm = TRUE)
print(result_na_removed)
Это выведет: 30
гораздо лучше! Установив na.rm = TRUE
, мы говорим R удалять NA значения перед вычислением среднего.
Применение опции Trim
Иногда мы хотим исключить крайние значения из нашего расчета среднего. Вот где полезна опция trim
. Она позволяет нам обрезать процент значений с обоих концов данных перед вычислением среднего.
numbers <- c(1, 2, 3, 4, 5, 100) # Обратите внимание на выброс 100
result_trimmed <- mean(numbers, trim = 0.1)
print(result_trimmed)
Это выведет значение, близкое к 3.5
Установив trim = 0.1
, мы удаляем 10% данных с каждого конца перед вычислением среднего. Это помогает уменьшить влияние выбросов.
Медиана
Медиана – это среднее значение, когда набор данных отсортирован по возрастанию. Она меньше подвержена влиянию выбросов, чем среднее.
numbers <- c(1, 3, 5, 7, 9, 11, 13)
result_median <- median(numbers)
print(result_median)
Это выведет: 7
Функция median()
работает аналогично mean()
. У нее также есть опция na.rm
для обработки NA значений:
numbers_with_na <- c(1, 3, NA, 7, 9, 11, 13)
result_median_na <- median(numbers_with_na, na.rm = TRUE)
print(result_median_na)
Это выведет: 8
Мода
Интересно, что в R нет встроенной функции для моды (наиболее частого значения). Но не волнуйтесь! Мы можем создать свою функцию:
get_mode <- function(v) {
uniqv <- unique(v)
uniqv[which.max(tabulate(match(v, uniqv)))]
}
numbers <- c(1, 2, 2, 3, 3, 3, 4, 4, 5)
result_mode <- get_mode(numbers)
print(result_mode)
Это выведет: 3
Давайте разберем эту пользовательскую функцию:
-
unique(v)
получает уникальные значения в векторе. -
match(v, uniqv)
находит позиции соответствий. -
tabulate()
подсчитывает количество occurrences. -
which.max()
находит позицию максимального счета. - Мы возвращаем значение на этой позиции.
Резюме функций
Вот удобная таблица, резюмирующая функции, которые мы изучили:
Мера | Функция | Опции |
---|---|---|
Среднее | mean() | na.rm, trim |
Медиана | median() | na.rm |
Мода | Пользовательская функция | N/A |
Помните, практика делает perfect! Попробуйте эти функции с различными наборами данных и исследуйте, как изменение опций влияет на результаты.
Заканчивая, я вспоминаю историю из моих первых дней обучения R. Я однажды потратил часы на вычисление среднего значения набора данных, только чтобы понять, что забыл удалить NA значения. Не будьте как я – всегда проверяйте свои данные и используйте na.rm = TRUE
при необходимости!
Счастливого кодирования, и пусть ваши статистические приключения в R будут наполнены инсайтами и моментами "ага"!
Credits: Image by storyset