Лінія, що найкраще підходить, не виглядає добре. Чому?


82

Подивіться на цей графік Excel: графік

Лінія «здорового глузду» найкраще підійде як майже вертикальна лінія прямо через центр точок (відредагована рукою червоним кольором). Однак лінійна лінія тренду, визначена Excel, є діагональною чорною лінією.

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

Оновлення 1. Електронна таблиця Excel з даними та графіком доступна тут: приклад даних , CSV на пастебіні . Чи доступні методи регресії type1 і type2 як функції excel?

Оновлення 2. Дані представляють параплан, який піднімається в теплі, коли пливе з вітром. Кінцева мета - дослідити, як сила і напрямок вітру змінюється з висотою. Я інженер, а не математик чи статистик, тому інформація в цих відповідях дала мені набагато більше областей для дослідження.


5
xy

12
Це явище було одним із головних статистичних відкриттів 19 століття (якщо не всіх часів). Це називається регресією до середнього . Дійсно, це сама причина, чому цю статистичну процедуру називають "регресією"!
whuber

3
Варто додати, що головна причина, коли припади виглядають настільки різними, полягає в тому, що сюжет настільки сильно перебільшує шкалу на осі y. Намалювавши його там, де обидві шкали пропорційні граничним стандартним відхиленням, можна дійти зовсім інших висновків про те, яка відповідність є більш "здоровим глуздом".
whuber

6
yx=0.714

7
Про це вже неодноразово зверталися на сайті (наприклад, дивіться тут ). Коли ви розумієте, що таке лінія регресії, легко зрозуміти, чому це чорна лінія. Задайте собі два питання: 1: яке середнє значення у, коли х приблизно 0,712? 2. Що передбачають червоні та чорні лінії? ... [Я поки що відклав закриття як дублікат, оскільки є конкретні проблеми з вашими даними, про які варто було б переосмислити ваше запитання]
Glen_b

Відповіді:


111

Чи є залежна змінна?

(xi,yi)

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

Ось як ви могли це зробити в R:

> para <- read.csv("para.csv")
> plot(para)
> 
> # run PCA
> pZ=prcomp(para,rank.=1)
> # look at 1st PC
> pZ$rotation
           PC1
lon 0.09504313
lat 0.99547316
> 
> colMeans(para) # PCA was centered
       lon        lat 
-0.7129371 53.9368720 
> # recover the data from 1st PC
> pc1=t(pZ$rotation %*% t(pZ$x) )
> # center and show
> lines(pc1 + t(t(rep(1,123))) %*% c)

yiy(xi)

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

Відповідь на запитання, яке не задавали

Отже, чому у вашому випадку лінійка (регресія) тенденції в Excel не здається підходящим інструментом для вашого випадку? Причина в тому, що лінія тренду - це відповідь на питання, яке не було задано. Ось чому.

lat=a+b×lon

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

yx

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

R код для моделювання:

t=1:123
a=1 #1
b=0 #1/10
y=10*sin(t)+a*t
x=10*cos(t)+b*t

plot(x,y,xlim=c(-60,60))
xp=-60:60
lines(b*t,a*t,col='red')

model=lm(y~x)
lines(xp,xp*model$coefficients[2]+model$coefficients[1])

Отже, напрямок вітру явно зовсім не узгоджується з лінією тренду. Вони пов'язані, звичайно, але нетривіально. Отже, моє твердження про те, що лінія тренда Excel - це відповідь на якесь питання, але не на те, що ви задали.

Чому PCA?

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

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

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

Метою PCA є виділення декількох факторів, що визначають множинні виходи, аналізуючи кореляції у вихідних даних. Це ефективно, коли вихід пов'язаний з факторами лінійно, що трапляється у ваших даних: дрейф вітру просто додає до координат кругового руху, тому PCA працює тут.

Налаштування PCA

Отже, ми встановили, що PCA повинен мати шанс тут, але як ми насправді його встановимо? Почнемо з додавання третьої змінної, часу. Ми будемо призначати час від 1 до 123 кожному 123 спостереженню, припускаючи постійну частоту вибірки. Ось як виглядає 3D-графік даних, розкриваючи його спіральну структуру:

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

Наступний сюжет показує уявний центр обертання параплана як коричневі кола. Ви можете бачити, як він летить на площині lat-lon з вітром, в той час як навколо нього кружляє параплан, показаний синьою крапкою. Час на вертикальній осі. Я підключив центр обертання до відповідного місця параплана, показуючи лише перші два кола.

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

Відповідний код R:

library(plotly)       

 para <- read.csv("C:/Users/akuketay/Downloads/para.csv")
 n=24

   para$t=1:123 # add time parameter

   # run PCA
     pZ3=prcomp(para)
     c3=colMeans(para) # PCA was centered
     # look at PCs in columns
       pZ3$rotation

       # get the imaginary center of rotation 
       pc31=t(pZ3$rotation[,1] %*% t(pZ3$x[,1]) )
     eye = pc31 + t(t(rep(1,123))) %*% c3
     eyedata = data.frame(eye)

     p = plot_ly(x=para[1:n,1],y=para[1:n,2],z=para[1:n,3],mode="lines+markers",type="scatter3d") %>%
       layout(showlegend=FALSE,scene=list(xaxis = list(title = 'lat'),yaxis = list(title = 'lon'),zaxis = list(title = 't'))) %>%
     add_trace(x=eyedata[1:n,1],y=eyedata[1:n,2],z=eyedata[1:n,3],mode="markers",type="scatter3d") 
     for( i in 1:n){
         p = add_trace(p,x=c(eyedata[i,1],para[i,1]),y=c(eyedata[i,2],para[i,2]),z=c(eyedata[i,3],para[i,3]),color="black",mode="lines",type="scatter3d")
       }

subplot(p)

Дрейф центру обертання параплана спричиняється, головним чином, вітром, а шлях і швидкість дрейфу співвідносяться з напрямком і швидкістю вітру, непомітними змінними, що цікавлять. Ось як виглядає дрейф при проектуванні на площину lat-lon:

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

Регресія PCA

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

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

Це було отримано наступним чином. Запустіть PCA на наборі даних, який має додатковий стовпець t = 1: 123, як обговорювалося раніше. Ви отримуєте три основні компоненти. Перший - просто t. Другий відповідає стовпцю lon, а третьому - стовпцю lat.

asin(ωt+φ)ω,φ

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

Висновок

Цікаво побачити, наскільки потужним є PCA та інші прості інструменти, коли мова йде про фізичні явища, де основні процеси стабільні, а входи перетворюються на виходи за допомогою лінійних (або лінеаризованих) зв’язків. Отже, у нашому випадку круговий рух дуже нелінійний, але ми його легко лінеаризуємо, використовуючи функції синус / косинус за параметром time t. Мої сюжети були зроблені з кількома рядками коду R, як ви бачили.

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

Також регресія Excel була аналізом поперечного перерізу, для якого лінійна регресія найкраще працює, тоді як ваші дані - процес часових рядів, де спостереження впорядковані в часі. Тут слід застосувати аналіз часових рядів, і це було зроблено в регресії PCA.

Примітки до функції

y=f(x)xyxyyxlat=f(lon)


11
a sin ωt+b cos ωt

11
Ви хочете ставитися до них однаково чи ні, залежить від мети. Це не властива якість даних. - Відмінна точка та +1.
Річард Харді

@NickCox, саме так, роботи теж було б менше
Аксакал

Можливо, варто зазначити, що PCA - це узагальнення регресії головної осі до ситуації, коли у вас є> 2 змінних. Але оскільки в цьому випадку є лише дві змінні, стандартною назвою для цієї техніки буде головна вісь регресія (також іноді називається ортогональною регресією або регресією типу II).
Том Венсельєр,

61

Відповідь, мабуть, стосується того, як ви подумки оцінюєте відстань до лінії регресії. Стандартна регресія (тип 1) мінімізує помилку в квадраті, де похибка обчислюється виходячи з вертикальної відстані до лінії .

Регресія типу 2 може бути більш аналогічною вашій оцінці найкращої лінії. У ньому зведена до мінімуму помилка квадрата - це перпендикулярне відстань до прямої . Існує ряд наслідків для цієї різниці. Одним важливим є те, що якщо ви поміняєте осі X і Y на своїй ділянці та повторно встановите рядок, ви отримаєте інший взаємозв'язок між змінними для регресії типу 1. Для регресії 2 типу відносини залишаються тими ж.

Моє враження, що існує досить багато дискусій щодо того, де використовувати регресію типу 1 проти типу 2, і тому я пропоную уважно ознайомитись з різницями, перш ніж вирішити, що застосувати. Регресія типу 1 часто рекомендується в тих випадках, коли одна вісь або контролюється експериментально, або принаймні вимірюється з набагато меншою помилкою, ніж інша. Якщо ці умови не дотримані, регресія типу 1 змістить нахили в бік 0, тому рекомендується регресія типу 2. Однак, при достатньому шумі в обох осях, регресія типу 2, мабуть, має тенденцію до зміщення їх у напрямку 1. Warton et al. (2006) та Smith (2009) є хорошими джерелами для розуміння дебатів.

Також зауважте, що існує декілька тонко різних методів, що підпадають під широку категорію регресії типу 2 (основна вісь, зменшена основна вісь та стандартна велика регресія), і що термінологія щодо конкретних методів є непослідовною.

Уортон, штат Індіана, Дж. Дж. Райт, Д. С. Фальстер та М. Вестобі. 2006. Двомаріатні методи підгонки ліній для аллометрії. Біол. Rev. 81: 259-291. doi: 10.1017 / S1464793106007007

Smith, RJ 2009. Про використання та неправильне використання скороченої основної осі для пристосування до лінії. Am. Дж. Фіз. Антрополь. 140: 476–486. doi: 10.1002 / ajpa.21090


Редагувати :

@amoeba вказує, що те, що я називаю регресією типу 2, також відоме як ортогональна регресія; це може бути більш підходящим терміном. Як я вже говорив вище, термінологія в цій галузі суперечлива, що вимагає додаткової обережності.


19
Дебати про те, чи слід використовувати тип 1 або 2? Немає про що дискутувати, коли ви знаєте, яка ваша мета (цільова функція чи функція втрати). А якщо ви цього не зробите, то тоді вам слід уточнити це, перш ніж продовжувати.
Річард Харді

7
Тип 2 також дає безглузді результати, якщо обидві осі використовують різні одиниці.
Джон Дворак

4
Ви використовуєте "Тип 1" і "Тип 2" так, ніби це стандартні терміни. Чи вони? Я ніколи не очолював когось, хто називав звичайну регресію та ортогональну регресію "тип 1" та "тип 2".
амеба

2
@ RichardHardy Звичайно, найкраще з’ясувати конкретну мету. Але, як я вже говорив у відповіді, моє враження полягає в тому, що триває суперечка щодо їхнього використання у низці випадків - і ті документи, які я цитую (а також суперечливі рекомендації, які я постійно отримую від рецензентів), схоже, це підтверджують.
mkt

3
@mkt, дякую за пояснення. Дійсно, може виникнути певна дискусія серед людей, які не впевнені, що вони хочуть. Там основна увага в дискусії полягає в тому, хто з двох є більш актуальним для їх предметної мети. Я хотів наголосити на тому, що немає дискусій, коли ваша мета буде чітко визначена, тобто мета предмета переведена на статистичну мову (що неминуче, якщо потрібно використовувати статистичні методи). Тож, мабуть, ми згодні, ми просто наголошуємо на різних частинах аргументу.
Річард Харді

31

Питання, на яке Excel намагається відповісти: "Якщо припустити, що y залежить від x, який рядок прогнозує y найкраще". Відповідь полягає в тому, що через величезні коливання у, жодна лінія не може бути особливо хорошою, а те, що відображає Excel, - найкраще, що ви можете зробити.

Якщо ви візьмете запропоновану червону лінію та продовжите її до x = -0,714 та x = -0,712, ви побачите, що її значення довільно, далеко від діаграми, і воно знаходиться на величезній відстані від відповідних значень y .

Питання, на яке відповідає Excel, полягає не в тому, "який рядок є найближчим до точок даних", а "в якому рядку найкраще передбачити значення y від значень x", і він робить це правильно.


4
Саме так. Основне припущення "x задано, y вимірюється / прогнозується".
Флоріс

12

Я не хочу нічого додати до інших відповідей, але хочу сказати, що вас обдурила погана термінологія, зокрема термін "лінія найкращого підходу", яка використовується в деяких курсах статистики.

Інтуїтивно зрозуміло, що "найкраще підходить лінія" буде виглядати як ваша червона лінія. Але лінія, вироблена Excel, не є «лінією найкращого підходу»; це навіть не намагається бути. Це рядок, який відповідає на запитання: з огляду на значення x, який для мене найкращий прогноз? або ж, яке середнє значення y для кожного значення x?

Зауважте тут асиметрію між x і y; використання назви "рядок найкраще підходить" затінює це. Так само, як Excel використовує "тенденцію".

Це дуже добре пояснюється за наступним посиланням:

https://www.stat.berkeley.edu/~stark/SticiGui/Text/regression.htm

Можливо, ви хочете чогось більшого, як називається "Тип 2" у відповіді вище, або "Рядок SD" на сторінці курсу "Берклі".


11

Частина оптичного випуску походить від різних масштабів - якщо використовувати однакову шкалу на обох осях, вона виглядатиме вже інакше.

Іншими словами, ви можете зробити так, щоб більшість таких ліній "найкращого пристосування" виглядали "неінтуїтивними", розклавши шкалу однієї осі назовні.


1
Я згоден, це відповідь - діапазон значень X становить приблизно 0,02 ширини, а діапазон Y лише близько 0,005 - насправді діаграма повинна бути приблизно в 4 рази ширшою, ніж висока, і було б очевидно, що найкраще підійде горизонтальний. Явище у питанні є чисто візуальним через різні масштаби.
RemcoGerlich

3
@RemcoGerlich Ми можемо погодитися, що, як показано у питанні, співвідношення сторін графіка не є корисним. Але припущення про те, що вам потрібен графік у 4 рази ширший, оскільки чисельні діапазони знаходяться в такому співвідношенні, неправдоподібні і, звичайно, не є фактом. Якби одиниці на будь-якій осі були змінені на коефіцієнт 1000, ви б запропонували співвідношення сторін 4000 або 0,004? Співвідношення 4x, ймовірно, є лише побічним ефектом різних одиниць.
Нік Кокс

4
Інші відповіді дають правильну відповідь. Цього, на жаль, немає. Якщо ми змінимо масштаб значень, таким чином, щоб ми отримали одне і те ж візуальне зображення, але з рівними осями, це все-таки проблема встановлення "тип 1" проти "тип 2".
Ганс Янссен

1
Він розповідає про "здоровий глузд", який найкраще підходить, те, що правильно "для людського ока". І тоді масштабування осей - це головне, що є актуальним.
RemcoGerlich

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

4

Кілька людей зазначили, що проблема є візуальною - графічне масштабування використовує помилкову інформацію. Більш конкретно, масштабування "lon" таке, що, здається, це щільна спіраль, яка передбачає, що лінія регресії забезпечує погану відповідність (за оцінкою, на яку я згоден, червона лінія, яку ви накреслили, забезпечила б нижчі квадратичні помилки, якщо дані були сформовані у поданому способі).

Нижче я надаю розкиданий механізм, створений в Excel, з можливістю масштабування на "lon", зміненого, щоб він не створював щільну спіраль у вашій скетерплоті. З цією зміною лінія регресії тепер забезпечує кращу візуальну придатність, і я думаю, що допомагає продемонструвати, як масштабування в оригінальному розсіювальному апараті дало оманливу оцінку придатності.

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

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

Для будь-кого, хто цікавиться, я побудував дані за допомогою інструмента картографування та показав регресію, пристосовану до даних. Червоні точки - це записані дані, а зелені - лінія регресії.

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

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

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


1
Регресія не показує напрям вітру
Аксакал

Ми знаємо лише лат і лон, і для даних, за яких це свідчить про зміну одного відносно іншого.
Брайан

Отже, що означає ця лінія тренду?
Аксакал

Якщо припустити, що першою точкою у файлі даних є початкове місце, схоже, є невеликий північний приріст маршруту, який пройшов далі на схід. Дані не дають інформації про силу вітру чи висоту, але надають напрямок - на схід на північ.
Брайан

Корекція, програмне забезпечення для картографування я використовував запит lat-lon, але його дані є lon-lat, тому напрям вітру буде незначним на північ від сходу, тобто є невеликий східний рух, який рухався далі на північ (або незначний рух західного напрямку на південь подорожував).
Брайан

1

Ваша заплутана регресія звичайних найменших квадратів (OLS) (яка мінімізує суму відхилення у квадраті щодо передбачуваних значень (спостережуване-передбачуване) ^ 2) та регресії основної осі (що мінімізує суми квадратів перпендикулярної відстані між кожною точкою та лінія регресії, іноді це називається регресією типу II, ортогональною регресією або стандартизованою регресією головного компонента).

Якщо ви хочете порівняти два підходи просто в R, просто перевірте

data=read.csv("https://pastebin.com/raw/4TsstQYm")
require(lmodel2)
fit = lmodel2(lat ~ lon, data=data)
plot(fit,method="OLS") # ordinary least squares regression

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

plot(fit,method="MA") # major axis regression

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

Те, що вам здається найбільш інтуїтивним (ваша червона лінія), - це лише найважливіша регресія по осі, що візуально кажучи, це справді найбільш логічно, оскільки мінімізує перпендикулярну відстань до точок. Регресія OLS з'явиться лише для мінімізації перпендикулярної відстані до ваших точок, якщо змінна x і y знаходяться на одній шкалі вимірювання та / або мають однакову кількість помилок (ви можете бачити це просто на основі теореми Піфагора). У вашому випадку ваша змінна y має значно більше поширення на ній, отже, різниця ...


0

Відповідь PCA є найкращою, тому що я думаю, що саме це вам слід зробити, враховуючи опис вашої проблеми, однак відповідь PCA може заплутати PCA та регресію, які абсолютно різні. Якщо ви хочете екстраполювати цей конкретний набір даних, тоді вам потрібно зробити регресію і, швидше за все, хочете зробити регрес Демінга (який, мабуть, іноді відповідає типу II, ніколи не чув про це опис). Однак, якщо ви хочете з’ясувати, які напрямки є найбільш важливими (власні вектори) та мають показник їх відносного впливу на набір даних (власні значення), то PCA - це правильний підхід.


4
Це здебільшого серія коментарів щодо інших відповідей. Краще буде коментувати кожен. Я не бачу, що відповідь @Aksakal взагалі плутає PCA та регресію.
Нік Кокс

Я хотів прокоментувати прямо, але не був досить авторитетним. Я не думаю, що Аксакал не бентежить регресію, але я вважав, що варто зазначити ОП, що PCA та регресія абсолютно різні.
Ендрю Х
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.