Skip to main content
LibreTexts - Ukrayinska

8.5: Використання R для лінійного регресійного аналізу

  • Page ID
    18001
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)

    У розділі 8.1 ми використовували дані в таблиці нижче для опрацювання деталей лінійного регресійного аналізу, де значення\(x_i\) концентрації аналіту\(C_A\), в серії стандартних розв'язків, і де значення\(y_i\), - їх вимірювані сигнали,\(S\). Давайте використаємо R для моделювання цих даних за допомогою рівняння для прямої лінії.

    \[y = \beta_0 + \beta_1 x \nonumber\]

    Таблиця\(\PageIndex{1}\): Дані калібрування з відпрацьованого прикладу в розділі 8.1.
    \(x_i\) \(y_i\)
    \ (x_i\) ">0.000 \ (y_i\) ">0.00
    \ (x_i\) ">0.100 \ (y_i\) ">12,36
    \ (x_i\) ">0,200 \ (y_i\) ">24.83
    \ (x_i\) ">0,300 \ (y_i\) ">35.91
    \ (x_i\) ">0,400 \ (y_i\) ">48.79
    \ (x_i\) ">0,500 \ (y_i\) ">60.42

    Введення даних в R

    Для початку ми створюємо два об'єкти, один, який містить концентрацію стандартів, і той, який містить відповідні їм сигнали.

    конц = с (0, 0,1, 0,2, 0,3, 0,4, 0,5)

    сигнал = с (0, 12,36, 24.83, 35.91, 48.79, 60.42)

    Створення лінійної моделі в R

    Лінійна модель в R визначається за допомогою загального синтаксису

    залежна змінна ~ незалежна змінна (и)

    Наприклад, синтаксис для моделі з рівнянням\(y = \beta_0 + \beta_1 x\), де\(\beta_0\) і\(\beta_1\) є регульованими параметрами моделі, є\(y \sim x\). Таблиця\(\PageIndex{2}\) містить деякі додаткові приклади, де\(A\) і\(B\) є незалежними змінними, такими як концентрації двох аналітів, і\(y\) є залежною змінною, наприклад вимірюваним сигналом.

    Таблиця\(\PageIndex{2}\): Синтаксис для вибраних лінійних моделей у R.
    модель синтаксис коментарі до моделі
    \(y = \beta_a A\) \(y \sim 0 + A\) прямолінійний примусово наскрізний (0, 0)
    \(y = \beta_0 + \beta_a A\) \(y \sim A\) пряма лінія з y -перехоплення
    \(y = \beta_0 + \beta_a A + \beta_b B\) \(y \sim A + B\) першого порядку в А і В
    \(y = \beta_0 + \beta_a A + \beta_b B + \beta_{ab} AB\) \(y \sim A * B\) першого порядку в A і B з AB взаємодією
    \(y = \beta_0 + \beta_{ab} AB\) \(y \sim A:B\) Тільки взаємодія AB
    \(y = \beta_0 + \beta_a A + \beta_{aa} A^2\) \(y \sim A + I(A\text{^2})\) многочлен другого порядку
    Примітка

    Остання формула в цій таблиці\(y \sim A + I(A\text{^2})\), включає в себе функцію I () або ASI. Одне з ускладнень написання формул полягає в тому, що вони використовують символи, які мають різні значення у формулах, ніж у математичному рівнянні. Для прикладу візьмемо просту формулу\(y \sim A + B\), яка відповідає моделі\(y = \beta_0 + \beta_a A + \beta_b B\). Зверніть увагу, що знак плюс тут будує формулу, яка має перехоплення і термін для\(A\) і термін для\(B\). Але що робити, якщо ми хотіли побудувати модель, яка використовувала суму\(A\) і\(B\) як змінна. Обгортання\(A+B\) всередині функції I () виконує це; таким чином\(y \sim I(A + B)\) будує модель\(y = \beta_0 + \beta_{a+b} (A + B)\).

    Для створення нашої моделі ми використовуємо функцію lm (), де lm означає лінійну модель, призначаючи результати об'єкту, щоб ми могли отримати доступ до них пізніше.

    calcurve = лм (сигнал ~ конк)

    Оцінка моделі лінійної регресії

    Для оцінки результатів лінійної регресії нам потрібно вивчити дані та лінію регресії, а також переглянути статистичне резюме моделі. Для вивчення наших даних і лінії регресії ми використовуємо функцію plot (), вперше введену в главі 3, яка приймає наступний загальний вигляд

    сюжет (x, y,...)

    де х і у - об'єкти, які містять наші дані та... дозволяють передавати необов'язкові аргументи для керування стилем графіка. Для накладення кривої регресії використовуємо функцію abline ()

    аблайн (об'єкт,...)

    об'єкт - це об'єкт, який містить результати лінійної регресійної моделі та... дозволяють передавати необов'язкові аргументи для керування стилем моделі. введення команд

    сюжет (конц, сигнал, pch = 19, col = «синій», cex = 2)

    аблайн (калькрива, col = «червоний», lty = 2, lld = 2)

    створює графік, показаний на малюнку\(\PageIndex{1}\).

    Примітка

    Функція abline () працює тільки з прямолінійної моделлю.

    Малюнок 5.21 PNG
    Рисунок\(\PageIndex{1}\): Приклад графіка регресії в R, що показує дані (синім кольором) та лінію регресії (червоним кольором). Ви можете налаштувати графік, скоригувавши необов'язкові аргументи команди графіка; докладніше див. Розділ 3.3.

    Для перегляду статистичного зведення регресійної моделі ми використовуємо функцію summary ().

    резюме (калькуляційна крива)

    Отриманий результат, який показаний нижче, містить три розділи.

    Телефонуйте:

    лм (формула = сигнал ~ конк)

    Залишки:

    1 2 3 4 5 6

    -0.20857 0.08086 0.48029 -0.51029 0.29914 -0.14143

    Коефіцієнти:

    Оцініть Std. Помилка при значенні Pr (>|t|)

    (Перехоплення) 0.2086 0.2919 0.715 0.514

    конц 120.7057 0,9641 125.205 2.44е-08 ***

    Знак. коди: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 '1

    Залишкова стандартна похибка: 0.4033 на 4 ступені свободи

    Множинний R-квадрат: 0.9997, скоригований R-квадрат: 0.9997

    F-статистика: 1.568e+04 на 1 і 4 ДФ, р-значення: 2.441e-08

    У першому розділі цього резюме перераховані залишкові помилки. Щоб вивчити графік залишкових помилок, скористайтеся командою

    сюжет (калькрива, яка = 1)

    який дає результат, показаний на малюнку\(\PageIndex{2}\). Зауважте, що R відображає залишки відносно прогнозованих (пристосованих) значень y замість відомих значень x, як ми це робили в розділі 8. 1; вибір способу побудови залишків не є критичним. Лінія на малюнку\(\PageIndex{2}\) - це згладжена посадка залишків.

    Примітка

    Причина включення аргументу, який = 1, очевидна не відразу. Коли ви використовуєте функцію графіка () R на об'єкті, створеному за допомогою lm (), за замовчуванням створюється чотири діаграми, які підсумовують придатність моделі. Першою з цих діаграм є залишковий графік; таким чином, який = 1 обмежує вихід на цей графік.

    Малюнок 5.23 PNG
    Рисунок\(\PageIndex{2}\): Приклад, що показує графік R залишкової помилки регресійної моделі.

    У другому розділі резюме наведено оцінки коефіцієнтів моделі - нахилу та y -перехоплення\(\beta_1\),\(\beta_0\) - разом із відповідними стандартними відхиленнями (Std. Помилка). Значення стовпця t та стовпчик Pr (>|t|) є значеннями p для наступних t -тестів.

    нахил:\(H_0 \text{: } \beta_1 = 0 \quad H_A \text{: } \beta_1 \neq 0\)

    y -перехоплення:\(H_0 \text{: } \beta_0 = 0 \quad H_A \text{: } \beta_0 \neq 0\)

    Результати цих t-тестів дають переконливі докази того, що нахил не дорівнює нулю і немає доказів того, що y -перехоплення значно відрізняється від нуля.

    Останній розділ резюме містить стандартне відхилення щодо регресії (залишкова стандартна похибка), квадрат коефіцієнта кореляції (кратний R-квадрат) та результат F -тесту на здатність моделі пояснювати варіацію у цінності.

    Значення для F-статистики є результатом F -тесту наступних нульових та альтернативних гіпотез.

    H 0: регресійна модель не пояснює варіації у

    H A: регресійна модель пояснює варіацію у

    Значення в стовпці Значення F - це ймовірність збереження нульової гіпотези. У цьому прикладі ймовірність є\(2.5 \times 10^{-8}\), що є вагомим доказом відхилення нульової гіпотези і прийняття регресійної моделі. Як і у випадку з коефіцієнтом кореляції, невелике значення ймовірності є ймовірним результатом для будь-якої калібрувальної кривої, навіть коли модель недоречна. Імовірність збереження нульової гіпотези для даних на малюнку\(\PageIndex{3}\), наприклад, є\(9.0 \times 10^{-5}\).

    Коефіцієнт кореляції є мірою ступеня, в якій регресійна модель пояснює варіацію у. Значення r знаходяться в діапазоні від —1 до +1. Чим ближче коефіцієнт кореляції до +1 або до —1, тим краще модель пояснює дані. Коефіцієнт кореляції 0 означає відсутність зв'язку між x і y. При розробці розрахунків для лінійної регресії ми не розглядали коефіцієнт кореляції. Для цього є причина. Для більшості прямолінійних калібрувальних кривих коефіцієнт кореляції дуже близький до +1, зазвичай 0,99 або вище. Існує тенденція, однак, занадто багато віри в значення коефіцієнта кореляції, і припустити, що r більше 0,99 означає, що лінійна регресійна модель є доречною. На малюнку\(\PageIndex{3}\) наведено корисний контрприклад. Хоча лінія регресії має коефіцієнт кореляції 0,993, дані явно криволінійні. Заняття на будинок простий: не закохуйтеся в коефіцієнт кореляції!

    Малюнок 5.17 PNG
    Малюнок\(\PageIndex{3}\): Приклад підгонки прямолінійної (червоним кольором) до криволінійних даних (синім кольором).

    Прогнозування невизначеності в\(x\) даному\(y\)

    Хоча базова установка R не включає команду для прогнозування невизначеності в незалежній змінній\(x\), враховуючи виміряне значення для залежної змінної\(y\), пакет ChemCal робить. Для використання цього пакета потрібно встановити його, ввівши наступну команду.

    встановлювати.пакунки («ChemCal»)

    Після установки, що вам потрібно зробити всього один раз, ви можете отримати доступ до функцій пакета за допомогою команди library ().

    бібліотека (ChemCal)

    Команда для прогнозування невизначеності в C A є inverse.predict () і приймає наступну форму для незваженої лінійної регресії

    inverse.predict (об'єкт, нові дані, альфа = значення)

    де об'єкт - об'єкт, який містить результати регресійної моделі, new-data - це об'єкт, який містить одне або кілька повторюваних значень для залежної змінної, а значення - числове значення рівня значущості. Давайте використаємо цю команду, щоб завершити приклад калібрувальної кривої з розділу 8.1, в якому ми визначили концентрацію аналіту в зразку за допомогою трьох повторюваних аналізів. Спочатку ми створюємо об'єкт, який містить повторювані вимірювання сигналу

    реп_сигнал = c (29.32, 29.16, 29.51)

    а потім ми завершуємо обчислення за допомогою наступної команди

    inverse.predict (крива калькуляції, rep_signal, альфа = 0,05)

    що дає результати, показані тут

    $ Передбачення

    [1] 0.2412597

    $`Стандартна помилка`

    [1] 0.002363588

    $ Впевненість

    [1] 0.006562373

    $`Обмеження довіри`

    [1] 0.2346974 0.2478221

    Концентрація аналіта, C A, задається значенням $Прогнозування, а його стандартне відхилення показано як $`Standard Error`.\(s_{C_A}\) Значенням $Confidence є довірчий інтервал\(\pm t s_{C_A}\), для концентрації аналіта, а $`Confidence Limits` забезпечує нижню і верхню межу довірчого інтервалу для C A.

    Використання R для зважених лінійних регресій

    Команда R для незваженої лінійної регресії також дозволяє зважену лінійну регресію, якщо ми включимо додатковий аргумент, ваги, значення якого є об'єктом, який містить ваги.

    лм (у ~ х, ваги = об'єкт)

    Давайте використаємо цю команду, щоб завершити зважений приклад лінійної регресії в розділі 8.2 По-перше, нам потрібно створити об'єкт, який містить ваги, які в R є зворотними від стандартних відхилень у y,\((s_{y_i})^{-2}\). Використовуючи дані з попереднього прикладу, вводимо

    сий = с (0,02, 0,02, 0,07, 0,13, 0,22, 0,33)

    ш = 1/сиі^2

    створити об'єкт, w, який містить ваги. Команди

    weighted_calcurve = лм (сигнал ~ конс, ваги = w)

    резюме (зважений_calcurve)

    згенерувати наступний висновок.

    Телефонуйте:

    лм (формула = сигнал ~ conc, ваги = w)

    Зважені залишки:

    1 2 3 4 5 6

    -2.223 2.571 3.676 -7.129 -1.413 -2.864

    Коефіцієнти:

    Оцініть Std. Помилка при значенні Pr (>|t|)

    (Перехоплення) 0.0446 0.08542 0.52 0.63

    конц 122.64111 0.93590 131.04 2.03е-08 ***

    Знак. коди: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 '1

    Залишкова стандартна помилка: 4.639 на 4 ступені свободи

    Множинний R-квадрат: 0.9998, скоригований R-квадрат: 0.9997

    F-статистика: 1.717e+04 на 1 і 4 ДФ, р-значення: 2.034e-08

    Будь-яка різниця між показаними тут результатами та результатами в розділі 8.2 є результатом помилок округлення в наших попередніх розрахунках.

    Примітка

    Можливо, ви помітили, що цей спосіб визначення ваг відрізняється від способу, показаного в розділі 8.2. При отриманні рівнянь для зважених лінійних регресій ви можете вибрати нормалізацію суми ваг так, щоб вона дорівнювала кількості точок, або ви можете вибрати не так - алгоритм у R не нормалізує ваги.

    Використання R для криволінійної регресії

    Як ми бачимо в цьому прикладі, ми можемо використовувати R для моделювання даних, які не є у вигляді прямої лінії, просто регулюючи лінійну модель.

    Приклад\(\PageIndex{1}\)

    Використовуйте наведені нижче дані, щоб вивчити дві моделі для даних у таблиці нижче, одна з яких використовує пряму лінію\(y = \beta_0 + \beta_1 x\), і одну, яка є поліномом другого порядку\(y = \beta_0 + \beta_1 x + \beta_2 x^2\).

    \(x_i\) \(y_i\)
    \ (x_i\) ">0.00 \ (y_i\) ">0.00
    \ (x_i\) ">1,00 \ (y_i\) ">0.94
    \ (x_i\) ">2.00 \ (y_i\) ">2.15
    \ (x_i\) ">3.00 \ (y_i\) ">3.19
    \ (x_i\) ">4.00 \ (y_i\) ">3.70
    \ (x_i\) ">5.00 \ (y_i\) ">4.21

    Рішення

    Спочатку ми створюємо об'єкти для зберігання наших даних.

    х = с (0, 1,00, 2,00, 3,00, 4,00, 5,00)
    у = с (0, 0,94, 2,15, 3,19, 3,70, 4,21)

    Далі будуємо наші лінійні моделі для прямолінійної та криволінійної підгонки до даних

    пряма лінія = лм (у ~ х)

    криволінійний = лм (у ~ х + I (x^2))

    і побудувати дані і обидві лінійні моделі на одному і тому ж ділянці. Оскільки abline () працює тільки для прямої лінії, ми використовуємо нашу криволінійну модель для обчислення достатніх значень для x і y, які ми можемо використовувати для побудови криволінійної моделі. Зауважте, що коефіцієнти для цієї моделі зберігаються в криволінійних коефіцієнтах\(\beta_0\), причому перше значення - друге\(\beta_1\), а третє значення -\(\beta_2\).

    ділянка (x, y, pch = 19, col = «синій», ylim = c (0,5), xlab = «х», ylab = «у»)

    аблайн (пряма лінія, ld = 2, col = «синій», lty = 2)

    x_seq = сек (-0,5, 5,5, 0,01)

    y_seq = криволінійні$ коефіцієнти [1] + криволінійні $ коефіцієнти [2] * x_seq + криволінійні$ коефіцієнти [3] * x_seq^2

    рядки (x_seq, y_seq, lwd = 2, col = «червоний», lty = 3)

    легенда (x = «верхній лівий», легенда = c («пряма лінія», «криволінійна»), col = c («синій», «червоний»), lty = c (2, 3), lwd = 2, BTY = «n»)

    Отриманий сюжет показаний тут.

    clipboard_e6fe729a81abd62a6965c6b6c583afcdf.png