Як я можу обчислити, чи має моя лінійна регресія статистично значущу відмінність від відомої теоретичної лінії?


14

У мене є деякі дані, які відповідають приблизно лінійній лінії:

введіть тут опис зображення

Коли я роблю лінійну регресію цих значень, я отримую лінійне рівняння:

у=0,997х-0,0136

В ідеальному світі рівняння повинно бути .у=х

Ясна річ, мої лінійні значення близькі до ідеального, але не зовсім. Моє запитання: як я можу визначити, чи є цей результат статистично значущим?

Чи суттєво відрізняється значення 0,997 від 1? Чи -0.01 суттєво відрізняється від 0? Або вони статистично однакові, і я можу зробити висновок, що з певним розумним рівнем довіри?у=х

Який хороший статистичний тест я можу використовувати?

Спасибі


1
Ви можете обчислити, є чи немає статистично значущої різниці, але слід зазначити, що це не означає, чи немає різниці. Ви можете бути впевнені в сенсі лише тоді, коли підробляєте нульову гіпотезу, але коли ви не підробляєте нульову гіпотезу, то це може бути або (1) дійсно нульова гіпотеза правильна (2) ваш тест не був потужним через малу кількість зразків (3) ваш тест виявився непосильним через неправильну альтернативну гіпотезу (3b) помилкову міру статистичної значущості через неправильне представлення недетермінованої частини моделі.
Секст

Для мене ваші дані не схожі на y = x + шум білого кольору. Чи можете ви розповісти більше про це? (тест на припущення, що ви отримуєте такий шум, може не "побачити" суттєвої різниці, незалежно від того, наскільки велика є вибірка, навіть коли існує велика різниця між даними та лінією y = x, тільки тому, що ви лише порівняння з іншими рядками y = a + bx, що може бути не правильним і найпотужнішим порівнянням)
Секст

Також, яка мета визначення значущості. Я бачу, що багато відповідей пропонують використовувати деякий альфа-рівень 5% (95% довірчих інтервалів). Однак це дуже умовно. Дуже важко бачити статистичну значимість як бінарну змінну (присутні чи ні). Це робиться з такими правилами, як стандартні рівні альфа, але це довільно і майже безглуздо. Якщо ви надаєте контекст, то використання певного рівня відсікання для прийняття рішення (бінарної змінної) на основі рівня значущості (а не бінарної змінної), тоді таке поняття, як бінарне значення, має більше сенсу.
Секст

1
Яку "лінійну регресію" ви виконуєте? Один звичайно вважає, що ви обговорюєте звичайну регресію найменших квадратів (з терміном перехоплення), але в такому випадку, оскільки обидва набори залишків матимуть нульове значення (точно), перехоплення в регресії між залишками також повинно бути нульовим (саме ). Оскільки це не так, тут відбувається щось інше. Чи можете ви надати певну інформацію про те, що ви робите, і чому?
whuber

Це схоже на проблему в вимірюванні визначення того, чи дають дві системи однаковий результат. Спробуйте поглянути на приємний альтман-сюжет для якогось матеріалу.
mdewey

Відповіді:


17

Цей тип ситуації може бути вирішений стандартним F-тестом для вкладених моделей . Оскільки ви хочете перевірити обидва параметри проти нульової моделі з фіксованими параметрами, вашими гіпотезами є:

Н0:β=[01]НА:β[01].

Тест F включає встановлення обох моделей та порівняння їх залишкової суми квадратів, які є:

SSE0=i=1n(yixi)2SSEA=i=1n(yiβ^0β^1xi)2

Статистика тесту:

ЖЖ(у,х)=н-22SSЕ0-SSЕАSSЕА.

Відповідне p-значення:

pp(у,х)=Ж(у,х)F-Dist(r|2,н-2) гr.


Реалізація в R: Припустимо, ваші дані знаходяться у кадрі даних, викликаному DATAзмінними, що називаються yі x. F-тест можна виконати вручну за допомогою наступного коду. У використаних нами модельованих макетних даних ви бачите, що оцінені коефіцієнти близькі до значення, що містяться в нульовій гіпотезі, а p-значення тесту не показує жодних вагомих доказів для фальсифікації нульової гіпотези про те, що справжньою регресійною функцією є функція ідентичності.

#Generate mock data (you can substitute your data if you prefer)
set.seed(12345);
n    <- 1000;
x    <- rnorm(n, mean = 0, sd = 5);
e    <- rnorm(n, mean = 0, sd = 2/sqrt(1+abs(x)));
y    <- x + e;
DATA <- data.frame(y = y, x = x);

#Fit initial regression model
MODEL <- lm(y ~ x, data = DATA);

#Calculate test statistic
SSE0   <- sum((DATA$y-DATA$x)^2);
SSEA   <- sum(MODEL$residuals^2);
F_STAT <- ((n-2)/2)*((SSE0 - SSEA)/SSEA);
P_VAL  <- pf(q = F_STAT, df1 = 2, df2 = n-2, lower.tail = FALSE);

#Plot the data and show test outcome
plot(DATA$x, DATA$y,
     main = 'All Residuals',
     sub  = paste0('(Test against identity function - F-Stat = ',
            sprintf("%.4f", F_STAT), ', p-value = ', sprintf("%.4f", P_VAL), ')'),
     xlab = 'Dataset #1 Normalized residuals',
     ylab = 'Dataset #2 Normalized residuals');
abline(lm(y ~ x, DATA), col = 'red', lty = 2, lwd = 2);

Вихідні summaryдані і plotдля цих даних виглядають приблизно так:

summary(MODEL);

Call:
lm(formula = y ~ x, data = DATA)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.8276 -0.6742  0.0043  0.6703  5.1462 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.02784    0.03552  -0.784    0.433    
x            1.00507    0.00711 141.370   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.122 on 998 degrees of freedom
Multiple R-squared:  0.9524,    Adjusted R-squared:  0.9524 
F-statistic: 1.999e+04 on 1 and 998 DF,  p-value: < 2.2e-16

F_STAT;
[1] 0.5370824

P_VAL;
[1] 0.5846198

введіть тут опис зображення


Цікаво, як ви генеруєте дані. Якщо ви додали помилку до змінної то найкращою лінією для відповідності даним було б не y = x. Це показує, наскільки тест гіпотези залежить не тільки від детермінованої частини y = x, але і від недетермінованої частини, яка пояснює, як розподіляються помилки. Тест нульової гіпотези тут стосується більш конкретної гіпотези 'y = x + e', а не для 'y = x'. х
Секст

1
Так, добре помічений. Модельовані дані не використовують стандартної гомоскдастичної лінійної регресії. Я використовував гетероседастичність в моделюванні, щоб спробувати приблизно імітувати шаблон даних на графіку, показаному ОП. (І я думаю, що я зробив досить прокляту гарну роботу!) Так що це той випадок, коли я підганяю стандартну гомоскедастичну лінійну модель для імітації даних, які не генеруються з цієї моделі. Це все-таки законно - все-таки добре моделювати дані з однієї моделі, а потім підходити до іншої, щоб побачити, що з’являється.
Моніку

1
Я навіть не помітив гетероседастичності в частині sd = 2/sqrt(1+abs(x))(я виявив, що центральна форма опуклості на графіку ОП дивна, і ваше зображення змусило мене думати: "О, це не так дивно, має бути щільність", так що справді хороша робота ). Я мав на увазі те, що ви додаєте помилку до змінної але не до змінної . Я здогадуюсь, що це важливо. На практиці, коли вимірюється теоретичний взаємозв'язок також може бути помилка в змінній і потрібно мати можливість фальсифікувати отримавши достатньо даних, але те, що фальсифікується насправді, єуху=хху=ху=х+е
Експорік Секст

1
Це правда, але це потрапляє на територію моделей з помилками змінних, що робить її більш складною. Я думаю, що ОП просто хоче використовувати в цьому випадку стандартну лінійну регресію.
Моніку

Я погоджуюся, що це є стороною, але, тим не менш, важливою. Простота питання спантеличує мене (в різних моментах), а також мене хвилює, оскільки це може бути занадто просте уявлення. Звичайно, це залежить від того, що насправді намагається досягти ("всі моделі помиляються ...."), але це просте подання може стати стандартом, а складні додаткові питання, про які слід пам’ятати, будуть забуті або навіть одна ніколи не починає думати про це (посилання на 95% ІС в інших відповідях є прикладом такого стандарту, якого люди сліпо дотримуються).
Секст

5

Ось класний графічний метод, який я описав із чудової книги Джуліана Фаравея "Лінійні моделі з R (друге видання)". Це одночасні 95% довірчі інтервали для перехоплення та нахилу, побудовані у вигляді еліпса.

Для ілюстрації я створив 500 спостережень зі змінною "x", що має N (середнє = 10, sd = 5) розподілу, а потім змінну "y", розподіл якої N (середнє = x, sd = 2). Це дасть співвідношення трохи більше 0,9, що може бути не таким вже й жорстким, як ваші дані.

Ви можете перевірити еліпс, щоб побачити, чи точка (перехват = 0, нахил = 1) потрапляє в межах або поза цим одночасним інтервалом довіри

library(tidyverse)
library(ellipse)
#> 
#> Attaching package: 'ellipse'
#> The following object is masked from 'package:graphics':
#> 
#>     pairs

set.seed(50)
dat <- data.frame(x=rnorm(500,10,5)) %>% mutate(y=rnorm(n(),x,2))

lmod1 <- lm(y~x,data=dat)
summary(lmod1)
#> 
#> Call:
#> lm(formula = y ~ x, data = dat)
#> 
#> Residuals:
#>     Min      1Q  Median      3Q     Max 
#> -6.9652 -1.1796 -0.0576  1.2802  6.0212 
#> 
#> Coefficients:
#>             Estimate Std. Error t value Pr(>|t|)    
#> (Intercept)  0.24171    0.20074   1.204    0.229    
#> x            0.97753    0.01802  54.246   <2e-16 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 2.057 on 498 degrees of freedom
#> Multiple R-squared:  0.8553, Adjusted R-squared:  0.855 
#> F-statistic:  2943 on 1 and 498 DF,  p-value: < 2.2e-16

cor(dat$y,dat$x)
#> [1] 0.9248032

plot(y~x,dat)
abline(0,1)


confint(lmod1)
#>                  2.5 %    97.5 %
#> (Intercept) -0.1526848 0.6361047
#> x            0.9421270 1.0129370

plot(ellipse(lmod1,c("(Intercept)","x")),type="l")
points(coef(lmod1)["(Intercept)"],coef(lmod1)["x"],pch=19)

abline(v=confint(lmod1)["(Intercept)",],lty=2)
abline(h=confint(lmod1)["x",],lty=2)

points(0,1,pch=1,size=3)
#> Warning in plot.xy(xy.coords(x, y), type = type, ...): "size" is not a
#> graphical parameter

abline(v=0,lty=10)
abline(h=0,lty=10)

Створено 2019-01-21 пакетом reprex (v0.2.1)


1

Ви можете обчислити коефіцієнти з n завантаженими зразками. Це, ймовірно, призведе до нормальних розподілених значень коефіцієнта (центральна гранична теорема). З цим ви могли б побудувати (наприклад, 95%) довірчий інтервал з t-значеннями (n-1 ступінь свободи) навколо середнього. Якщо ваш ІС не включає 1 (0), він статистично значимий інакше, або точніше: Ви можете відхилити нульову гіпотезу про рівний нахил.


Як ви це сформулювали тут, він перевіряє окремо дві гіпотези, але те, що вам потрібно, - це спільний тест.
kjetil b halvorsen

0

β0=0β1=1


1
Але те, що потрібно - це спільний тест, як і в інших відповідях.
kjetil b halvorsen

@kjetilbhalvorsen Я зрозумів, що сьогодні помилявся, читаючи інші відповіді. Я його видалю.
RScrlli

0

Вам слід встановити лінійну регресію і перевірити 95% довірчі інтервали для двох параметрів. Якщо КІ нахилу включає 1, а КІ зміщення включає 0, двосторонній випробування є незначним прибл. на рівні (95%) ^ 2 - оскільки ми використовуємо два окремі тести, ризик типу I збільшується.

Використання R:

fit = lm(Y ~ X)
confint(fit)

або ви використовуєте

summary(fit)

і вирахуйте 2 інтервали сигми самостійно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.