-
Notifications
You must be signed in to change notification settings - Fork 0
4 5. Descriptive statistics
- Вновь вернемся к данным mtcars. Рассчитайте среднее значение времени разгона (qsec) для автомобилей, число цилиндров (cyl) у которых не равняется 3 и показатель количества миль на галлон топлива (mpg) больше 20. Получившийся результат (среднее значение) сохраните в переменную result.
result <-mean(mtcars$qsec[mtcars$cyl != 3 & mtcars$mpg > 20])
- При помощи функции aggregate рассчитайте стандартное отклонение переменной hp (лошадиные силы) и переменной disp (вместимости двигателя) у машин с автоматической и ручной коробкой передач. Полученные результаты (результаты выполнения функции aggregate) сохраните в переменную descriptions_stat.
descriptions_stat <- aggregate(cbind(hp, disp) ~ am, mtcars, sd)
- Воспользуемся встроенными данными airquality. В новую переменную сохраните subset исходных данных, оставив наблюдения только для месяцев 7, 8 и 9. При помощи функции aggregate рассчитайте количество непропущенных наблюдений по переменной Ozone в 7, 8 и 9 месяце. Для определения количества наблюдений используйте функцию length(). Результат выполнения функции aggregate сохраните в переменную result. Подсказки:
- Не забудьте сделать subset, чтобы отобрать наблюдения только по нужным месяцам, вам может пригодиться следующая конструкция:
x <- 5 x %in% c(3, 4, 5) [1] TRUE
- Для подсчета числа непропущенных наблюдений воспользуйтесь записью с помощью формулы, при которой пропущенные значения не учитываются: aggregate(y ~ x + z , data, FUN)
df <- subset(airquality, Month%in%c(7,8,9)) result <- aggregate(Ozone ~ Month,df,length)
- Примените функцию describeBy к количественным переменным данных airquality, группируя наблюдения по переменной Month. Чему равен коэффициент асимметрии (skew) переменной Wind в восьмом месяце? В графу с ответом требуется ввести только число. Десятичный разделитель - запятая: например 12,6
descr2 <- describeBy(x = airquality, group = airquality$Month ) or describeBy(airquality$Wind, airquality$Month == 8)$'TRUE'['skew']
- Обратимся к встроенным данным iris. Соотнесите значения стандартного отклонения переменных.
sd(df$Sepal.Length, na.rm = T)
sd(df$Sepal.Width, na.rm = T)
sd(df$Petal.Length, na.rm = T)
sd(df$Petal.Width, na.rm = T)
- В переменной my_vector сохранен вектор с пропущенными значениями. Вам нужно создать новый вектор fixed_vector, в котором все пропущенные значения вектора my_vector будут заменены на среднее значение по имеющимся наблюдениям. При этом исходный вектор оставьте без изменений! Напоминаю, переменная my_vector уже создана, сразу начинайте работать с ней. Перед тем, как сдавать решение, вы можете потренироваться на различных примерах. Ниже небольшой код, который может создать случайный вектор (выборка из нормального распределения) с пропущенными значениями. my_vector <- rnorm(30) my_vector[sample(1:30, 10)] <- NA # на десять случайных позиций поместим NA Задача для самостоятельной работы: Изучите справку по функции replace. Вызвать справку можно исполнив команду: ?replace Попробуйте решить это задание при помощи этой функции.
fixed_vector <- replace(my_vector, is.na(my_vector), mean(my_vector, na.rm = T))
- При помощи функции ggplot() или boxplot() постройте график boxplot, используя встроенные в R данные airquality. По оси x отложите номер месяца, по оси y — значения переменной Ozone. На графике boxplot отдельными точками отображаются наблюдения, отклоняющиеся от 1 или 3 квартиля больше чем на полтора межквартильных размаха. Сколько таких наблюдений присутствует в сентябре (месяц №9)? Обратите внимание, что для корректного отображения графика ggplot ожидает факторную переменную по оси x.
boxplot( airquality$Ozone ~ airquality$Month )
boxplot(Ozone~Month, airquality, xlab="Month", ylab="Ozone")
- Используем знакомые нам данные mtcars. Нужно построить scatterplot с помощью ggplot из ggplot2, по оси x которого будет mpg, по оси y - disp, а цветом отобразить переменную (hp). Полученный график нужно сохранить в переменную plot1. Таким образом в ответе должен быть скрипт: plot1 <- ggplot(data, aes())+ geom_****()
plot1 <- ggplot(df, aes(x= mpg, y= disp, col = hp))+ geom_point()
- Студент Ярослав очень любит строить графики в R. Основываясь на данных iris он хочет построить следующий график: Scatterplot (диаграмма рассеивания), где по оси X будет отложена переменная Sepal.Length, по оси Y переменная Sepal.Width. За цвет точек будет отвечать переменная Species, а за размер точек переменная Petal.Length. Ярослав написал следующую команду ggplot(aes(Sepal.Length, Sepal.Width, col = Species)) + geom_point(iris, size = Petal.Length) Однако построить желаемый график не удается! Укажите, какие ошибки совершил Ярослав и попробуйте построить данный график самостоятельно. Возможно несколько правильных ответов.
Первым аргументом функции ggplot() должны быть данные iris
Переменная, отвечающая за размер точек должна быть указана внутри функции aes()
ggplot(iris, aes(Sepal.Length, Sepal.Width, col = Species)) + geom_point(aes(size = Petal.Length))