Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...