15. Линейная регрессия. Линейный регрессионный анализ в R.
15. Линейная регрессия. Линейный регрессионный анализ в R.
Линейная регрессия — регрессионная модель зависимости какой-либо переменной от другой(других) переменных с линейной функцией зависимости. Основное свойство заключается в том, что увеличение/уменьшение значений зависимой переменной происходит пропорционально увеличению/уменьшению независимой переменной. Задачей построения линейной модели является оценка адекватности построенной модели вида y=kx+b Рассмотрим простейший случай одной независимой переменной: В этом уравнении модели линейной регрессии b- свободный член, а параметр k определяет наклон линии регрессии по отношению к осями координат. Параметры k и b определяются методом наименьших квадратов, который приводит к формуле: Метод наименьших квадратов Линию лучшей подгонки выбирают так, чтобы сумма квадратов остатков была минимальной. Линейная регрессия в R. Проверим модель на адекватность: H0: =0 – модель не адекватна H1: β ≠ 0 – модель адекватна > x < - mydata[, 1] > y < - mydata[, 2] > plot(x, y, main=" Зависимость", xlab=" Переменная х", ylab=" Переменная у", type=" p", pch=21, col=" green", bg=" pink", cex=2) > mymodel< -lm(y~x) > mymodel$coefficients (Intercept) x 13. 73880599 0. 04593611 > summary(mymodel) F-statistic: 0. 03663 on 1 and 18 DF, p-value: 0. 8504 > abline(mymodel, lty=2, lwd=2, col=" red" ), lwd – толщина линии
Ответ: линейной зависимости нет. > x< -c(3. 6, 7. 8, 9. 6, 5. 7, 8. 9) > y< -c(2. 7, 8. 9, 6. 5, 8. 8, 6. 4) > p. lm< -lm(formula=x~y) > summary(p. lm) Residuals: 1 2 3 4 5 -1. 7151 -0. 3409 2. 5529 -2. 3954 1. 8985 Coefficients: Estimate Std. Error t value Pr(> |t|) (Intercept) 4. 0845 3. 5050 1. 165 0. 328 y 0. 4558 0. 4985 0. 914 0. 428
Residual standard error: 2. 511 on 3 degrees of freedom Multiple R-Squared: 0. 2179, Adjusted R-squared: - 0. 0428 F-statistic: 0. 8358 on 1 and 3 DF, p-value: 0. 428 Команда summary() выдает полную информацию о построенной модели: значения остатков (residuals - разность модельных и истинных значений переменной y). Если объем выборки большой, то печатается оценка распределения остатков (квартили). коэфициенты модели и оценку их значимости по критерию Стьюдента (в нашем случае все коэфициенты не значимы, поскольку все вероятности (0. 328 и 0. 428) больше 0. 05 - т. е. нельзя считать, что существует линейная зависимость между x и y). Функция abline() строит прямую по найденным a и b. Функция plot() строит экспериментальные точки. Пример plot(x, y) abline(lm(x~y)) 16. Основные типы объектов среды R для хранения данных. В среде R используются следующие типы объектов для хранения данных: — векторы (vector); — матрицы (matrix); — массивы (array); — таблицы данных (data frame); — списки (list). Для работы с данными, закодированными в рамках объектов для хранения данных, используются различные функции. В любом языке программирования роль функций состоит в преобразовании данных на входе в данные на выходе. В R существуют функции базового пакета, функции дополнительных пакетов и пользовательские функции. Векторный тип хранения данных при работе в среде R применяется достаточно широко (в векторе содержатся данные одного типа). Функция seq() позволяет создавать последовательности чисел Вектор представляет собой поименованный одномерный объект, содержащий набор однотипных элементов (числовые, логические, либо текстовые значения – никакие их сочетания не допускаются). my. vector < - c(1, 2, 3, 4, 5) my. vector [1] 1 2 3 4 5 Для создания векторов, содержащих последовательную совокупность чисел, удобна функция seq() (от " sequence" – последовательность). Так, вектор с именем S, содержащий совокупность целых чисел от 1 до 7, можно создать следующим образом:
S < - seq(1, 7) S [1] 1 2 3 4 5 6 7 Идентичный результат будет получен при помощи команды S < - 1: 7 S [1] 1 2 3 4 5 6 7 В качестве дополнительного аргумента функции seq() можно задать шаг приращения чисел: S < - seq(from = 1, to = 5, by = 0. 5) S [1] 1. 0 1. 5 2. 0 2. 5 3. 0 3. 5 4. 0 4. 5 5. 0
Если вектор является одномерным набором данных, то матрица — это уже двумерный, а массив — многомерный набор однотипных данных. mice < - matrix(c(13, 44, 25, 29), nrow = 2, byrow = TRUE) Либо my. mat< - matrix(seq(1, 16), nrow=4, ncol=4) > my. mat [, 1] [, 2] [, 3] [, 4] [1, ] 1 5 9 13 [2, ] 2 6 10 14 [3, ] 3 7 11 15 [4, ] 4 8 12 16 Обратите внимание на то, что по умолчанию заполнение матрицы происходит по столбцам, т. е. первые четыре значения входят в первый столбец, следующие четыре значения – во второй столбец, и т. д. Такой порядок заполнения можно изменить, придав специальному аргументу byrow (от “by row” – по строкам) значение TRUE: my. mat < - matrix(seq(1, 16), nrow = 4, ncol = 4, byrow = TRUE) my. mat [, 1] [, 2] [, 3] [, 4] [1, ] 1 2 3 4 [2, ] 5 6 7 8 [3, ] 9 10 11 12 [4, ] 13 14 15 16 Таблицы данных являются основным способом хранения данных и создаются при импорте данных в R из внешних источников. В разных столбцах таблицы могут храниться разные типы данных, но в одном отдельно взятом столбце должны находиться данные только одного типа. Таблицу данных можно создать с использованием функции data. frame() При этом действует правило, согласно которому все столбцы должны иметь одинаковую длину (собственно, с " точки зрения" R таблица данных является частным случаем списка, в котором все компоненты-векторы имеют одинаковый размер). Предположим, у нас есть наблюдения по общей численности мужского (Male) и женского (Female) населения в трех городах City1, City2, и City3. Представим эти данные в виде одной таблицы с именем CITY. Для начала создадим текстовые векторы с названиями городов (сity) и пола (sex), а также вектор со значениями численности представителей каждого пола (number): city < - c(" City1", " City1", " City2", " City2", " City3", " City3" ) sex < - c(" Male", " Female", " Male", " Female", " Male", " Female" ) number < - c(12450, 10345, 5670, 5800, 25129, 26000) Теперь объединим эти три вектора в одну таблицу данных и посмотрим, что получилось: CITY < - data. frame(City = city, Sex = sex, Number = number) CITY City Sex Number 1 City1 Male 12450
2 City1 Female 10345 3 City2 Male 5670 City2 Female 5800 5City3 Male 25129 6City3 Female 26000 Обратите внимание на синтаксис функции data. frame(): ее аргументы перечисляются в формате " заголовок столбца = добавляемый вектор". В отличие от вектора или матрицы, которые могут содержать данные только одного типа, в список (list) или таблицу (data frame) можно включать сочетания любых типов данных. Это позволяет эффективно, т. е. в одном объекте, хранить разнородную информацию. Каждый компонент списка может являться переменной, вектором, матрицей, фактором или другим списком. Для создания списков в R служит одноименная функция list(). Рассмотрим пример: # Сначала создадим три разнотипных вектора - с текстовыми, # числовыми и логическими значениями: vector1 < - c(" A", " B", " C" ) vector2 < - seq(1, 3, 0. 5) vector3 < - c(FALSE, TRUE) # Теперь объединим эти три вектора в один объект-список, # компонентам которого присвоим имена Text, Number и Logic: my. list < - list(Text=vector1, Number=vector2, Logic=vector3) # Просмотрим содержимое созданного списка: my. list $Text [1] " A" " B" " C" $Number [1] 1. 0 1. 5 2. 0 2. 5 3. 0 $Logic [1] FALSE TRUE
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|