Добавил:
По своей натуре перфекционист. Поэтому люблю все аккуратно оформлять и упорядочивать, складывать по полочкам. Вот, не пропадать же добру, нажитому за четыре кропотливых семестра. Тут я выложил все мои ответы, курсовые, отчеты и некоторые ДЗ. Они могут вам помочь для получения зачета или сдачи экзамена. Если чего-то не нашли в папочках, то попытайте удачу в разделе НЕОТСОРТИРОВАННОЕ на моей страничке, там все 4 семестра разложены по папкам. ГРУППА КТ-43-15. Годы обучения 2015-2019. Коллекция будет пополняться. Что ж, удачки :З Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

R Language (Сковорцов) / Анализ данных на языке R

.pdf
Скачиваний:
349
Добавлен:
15.09.2017
Размер:
451.1 Кб
Скачать

Функция cor.test () сравнивает только два значения за раз. Но что делать если необходимо сравнить множество значений попарно друг с другом? Для этого можно использовать функцию cor (), но она показывает только взаимосвязь пары переменных, не хватает р-уровня значимости для проверки гипотез. В пакете psych есть функция corr.test (), которая более полезная при проверке корреляции.

df <- mtcars

df_numeric <- df[, c(1,3:7)]

pairs(df_numeric)

cor(df_numeric)

fit <- corr.test(df_numeric) fit$r

fit$p fit$adjust

corr.test(df_numeric)

Перейдем к регрессионному анализу. Регрессионный анализ как и корреляция позволяет нам увидеть взаимосвязь двух количественных переменных. Но большой особенностью регрессионного анализа является способность объяснить как одна переменная предсказывает другую переменную. Функция lm () позволяет нам проводить регрессионный анализ.

fit <- lm(mpg ~ hp, df) summary(fit)

При визуализации данных мы тоже можем увидеть как именно взаимодействуют наши данные при помощи линии регрессии. Она строится добавлением geom_smooth и указанием в качестве аргумента метод линейной регрессии.

ggplot(df, aes(hp, mpg))+ geom_point(size = 5)+ geom_smooth(method = "lm")

Линия регрессии строится на основе предсказанных линейной регрессией значений. Эти предсказанные значения можно посмотреть в переменной fitted.values.

fitted_values_mpg <- data.frame(mpg = df$mpg, fitted = fit$fitted.values )

Регрессионная модель предсказывает только для переданных ей данных. Если в данных есть пропущенные значения или какая-то часть данных не попала в регрессионную модель, то можно использовать построенную регрессионную модель в функции predict (), которая поможет с этим разобраться.

new_hp <- data.frame(hp = c(100, 150, 129, 300)) new_hp$mpg <- predict(fit, new_hp)

predict(fit, new_hp)

Задание 9.1. Напишите функцию corr.calc, которая на вход получает data.frame с двумя количественными переменными, рассчитывает коэффициент корреляции Пирсона и возвращает

вектор из двух значений: коэффициент корреляции и p - уровень значимости.

Пример работы функции:

>corr.calc( mtcars[, c(1,5)] ) # на вход подаем данные mtcars только с переменными mpg и drat [1] 0.6811719078 0.0000177624

>corr.calc( iris[,1:2] ) # на вход подаем данные iris только с переменными Sepal.Length и Sepal.Width

[1] -0.1175698 0.1518983

Задание 9.2. Постройте линейную регрессию для одного из набора данных , где первая переменная - зависимая, вторая - независимая. В переменной my_reg_coef сохраните значения регрессионных коэффициентов.

Задание 9.3. Постройте scatterplot по данным iris, сохранив его в переменную my_plot :

Ось X - переменная Sepal.Width Ось Y - переменная Petal.Width Цвет точек - переменная Species

Также добавьте линейное сглаживание для каждой группы наблюдений по переменной Species.

10. Множественная линейная регрессия

Ранее мы строили линейную регрессию на основе одной зависимой переменной. Естественно, можно предсказывать на основе большего количества переменных. Мы точно так же, как и в регрессионном анализе, можем использовать различные виды формулы.

fit <- lm(Fertility ~ Examination + Catholic, data = swiss)

summary(fit)

fit2 <- lm(Fertility ~ Examination*Catholic, data = swiss)

summary(fit2)

Линейную регрессию можно строить не только с количественными независимыми переменными, но и с независимыми.

hist(swiss$Catholic, col = 'red')

swiss$confession <- ifelse(swiss$Catholic > 60, 'Catholic', 'Protestant')

swiss$confession <- as.factor(swiss$confession)

fit3 <- lm(Fertility ~ Examination + confession, data = swiss)

summary(fit3)

fit4 <- lm(Fertility ~ confession*Examination, data = swiss)

summary(fit4)

fit5 <- lm(Fertility ~ religious*Infant.Mortality*Examination, data = swiss) summary(fit5)

При составлении множественного регрессионного анализа необходимо понимать, что предсказанные значения для зависимой переменной могут получать разными в зависимости от используемых независимых переменных. Как выбрать наиболее правильную регрессионную модель обсудим дальше.

rm(swiss)

swiss <- data.frame(swiss)

fit_full <- lm(Fertility ~ ., data = swiss) summary(fit_full)

fit_reduced1 <- lm(Fertility ~ Infant.Mortality + Examination + Catholic + Education, data = swiss) summary(fit_reduced1)

Допустим, у нас есть две регрессионные модели: fitt_full и fit_reduced1. В первой модели у нас используются все используемые данные, а во второй одной из переменных не хватает. Чтобы понять какая из регрессионных моделей наиболее точно предсказывает значения зависимой переменной, воспользуемся функцией anova (). Из результатов мы видим, что

Соседние файлы в папке R Language (Сковорцов)