Я не дуже розумію гетеросцедастичність. Мені хотілося б знати, чи підходить моя модель чи ні відповідно до цього сюжету.
Я не дуже розумію гетеросцедастичність. Мені хотілося б знати, чи підходить моя модель чи ні відповідно до цього сюжету.
Відповіді:
Як прокоментував @IrishStat, вам потрібно перевірити свої спостережувані значення на предмет помилок, щоб побачити, чи є проблеми із змінністю. Я повернуся до цього до кінця.
Так ви отримуєте уявлення про те, що ми маємо на увазі під гетерокедастичністю: коли ви підходите до лінійної моделі на змінну ви по суті говорите, що ви робите припущення, що ваш або в умови мирянина, що ваш повинен прирівнювати плюс деякі помилки, які мають відхилення . Це практично ваша лінійна модель , де помилки . Добре, круто поки що подивимось це в коді:
set.seed(1); #set the seed for reproducability
N = 100; #Sample size
x = runif(N) #Independant variable
beta = 4; #Regression coefficient
epsilon = rnorm(N); #Error with variance 1 and mean 0
y = x * beta + epsilon #Your generative model
lin_mod <- lm(y ~x) #Your linear model
так правильно, як поводиться моя модель:
x11(); par(mfrow=c(1,3)); #Make a new 1-by-3 plot
plot(residuals(lin_mod));
title("Simple Residual Plot - OK model")
acf(residuals(lin_mod), main = "");
title("Residual Autocorrelation Plot - OK model");
plot(fitted(lin_mod), residuals(lin_mod));
title("Residual vs Fit. value - OK model");
що має дати вам щось подібне: а це означає, що у ваших залишків, мабуть, немає очевидної тенденції, заснованої на вашому довільному індексі (1-й сюжет - найменш інформативний насправді), схоже, немає між ними реального співвідношення (2-й сюжет - досить важливий і ймовірно, важливіше, ніж гомоскедастичність) і те, що пристосовані значення не мають очевидної тенденції відмови, тобто. ваші встановлені значення проти залишків виглядають цілком випадковими. Виходячи з цього, ми б сказали, що у нас немає проблем з гетероскедастичністю, оскільки наші залишки мають всюди однакову дисперсію.
Гаразд, ви хочете гетерокедастичності. Враховуючи ті самі припущення щодо лінійності та адитивності, давайте визначимо іншу генеративну модель із "очевидними" проблемами гетероскдастичності. А саме після деяких значень наше спостереження стане набагато більш галасливим.
epsilon_HS = epsilon;
epsilon_HS[ x>.55 ] = epsilon_HS[x>.55 ] * 9 #Heteroskedastic errors
y2 = x * beta + epsilon_HS #Your generative model
lin_mod2 <- lm(y2 ~x) #Your unfortunate LM
де прості діагностичні схеми моделі:
par(mfrow=c(1,3)); #Make a new 1-by-3 plot
plot(residuals(lin_mod2));
title("Simple Residual Plot - Fishy model")
acf(residuals(lin_mod2), main = "");
title("Residual Autocorrelation Plot - Fishy model");
plot(fitted(lin_mod2), residuals(lin_mod2));
title("Residual vs Fit. value - Fishy model");
має дати щось на кшталт: Тут перший сюжет здається трохи "дивним"; Схоже, у нас є кілька залишків, які скупчуються невеликими розмірами, але це не завжди проблема ... Другий сюжет є нормальним, означає, що ми не маємо кореляції між вашими залишками в різних відставаннях, тому ми можемо на мить дихати. І третій сюжет розсипає боби: зрозуміло, що коли ми дістаємося до більш високих значень, наші залишки вибухають. У нас, безумовно, є гетерокедастичність у залишках цієї моделі, і нам потрібно щось зробити (наприклад, IRLS , регресія Theil – Sen тощо).
Тут проблема була дійсно очевидною, але в інших випадках ми могли б пропустити; щоб зменшити наші шанси пропустити його ще одним проникливим сюжетом був той, про який згадував IrishStat: Залишки проти спостережуваних значень, або для нашої проблеми з іграшками, що знаходиться під рукою:
par(mfrow=c(1,2))
plot(y, residuals(lin_mod) );
title( "Residual vs Obs. value - OK model")
plot(y2, residuals(lin_mod2) );
title( "Residual vs Obs. value - Fishy model")
що має дати щось на зразок:
тут перший сюжет здається "відносно нормальним" із лише дещо туманною тенденцією до зростання залишків моделі (як згадував Скортчі, тут ми не переживаємо). Другий сюжет, хоча, повністю демонструє цю проблему. Ясно, що у нас є помилки, сильно залежні від значень спостережуваних значень. Це виявляється в питаннях з коефіцієнтом визначення наших підручних моделей; напр. модель «OK» , що має скоригований в в той час як «тьмяний» один з . Таким чином, у нас є підстави вважати, що неправильне визначення моделі може бути проблемою. (Дякую Скортчі, що вказав на оманливу заяву в моїй оригінальній відповіді.)
Справедливості вашої ситуації графік залишків та встановлених значень здається відносним. Перевірка ваших залишків та спостережуваних значень, ймовірно, буде корисною, щоб переконатися, що ви перебуваєте в безпеці. (Я не згадував QQ-сюжети чи щось подібне, щоб не заплутувати речі більше, але ви, можливо, захочете також коротко перевірити їх.) Я сподіваюся, що це допомагає у вашому розумінні гетерокедастичності та на що слід звернути увагу.
Здається, ваше запитання стосується гетероседастичності (тому що ви згадали його по імені та додали тег), але ваше чітке запитання (наприклад, у назві та), що закінчує вашу посаду, є більш загальним, "чи відповідна моя модель чи ні відповідно до цього сюжет ». Існує більше визначення того, чи є модель невідповідною, ніж оцінка гетероседастичності.
Я скребив ваші дані за допомогою цього веб-сайту (ht @Alexis). Зауважте, що дані сортуються у порядку зростання fitted
. Виходячи з регресії та верхнього лівого сюжету, він здається достатньо вірним:
mod = lm(residuals~fitted)
summary(mod)
# ...
# Residuals:
# Min 1Q Median 3Q Max
# -0.78374 -0.13559 0.00928 0.19525 0.48107
#
# Coefficients:
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) 0.06406 0.35123 0.182 0.856
# fitted -0.01178 0.05675 -0.208 0.836
#
# Residual standard error: 0.2349 on 53 degrees of freedom
# Multiple R-squared: 0.0008118, Adjusted R-squared: -0.01804
# F-statistic: 0.04306 on 1 and 53 DF, p-value: 0.8364
Я не бачу тут жодних доказів гетероседастичності. Зверху праворуч (qq-графік) не виникає проблем з припущенням про нормальність.
З іншого боку, крива "S" у червоній нижній частині зображення (у верхньому лівому куті), а ділянки acf та pacf (внизу) здаються проблематичними. У крайній лівій частині більшість залишків знаходяться над сірою лінією 0. Коли ви рухаєтеся праворуч, основна частина залишків опускається нижче 0, потім вище, а потім знову нижче. Результат цього полягає в тому, що якби я сказав вам, що я дивлюся на певний залишок і що він має негативне значення (але я не сказав вам, на кого я дивився), ви можете з хорошою точністю здогадатися, що залишки поблизу також були негативно оцінені. Іншими словами, залишки не є незалежними - знаючи щось про одне, дає вам інформацію про інших.
Окрім сюжетів, це можна перевірити. Простий підхід полягає у використанні тесту на виконання :
library(randtests)
runs.test(residuals)
# Runs Test
#
# data: residuals
# statistic = -3.2972, runs = 16, n1 = 27, n2 = 27, n = 54, p-value = 0.0009764
# alternative hypothesis: nonrandomness
Сенс цього полягає в тому, що ваша модель неправильно уточнена. Оскільки у відносині є два "вигину", вам потрібно додати терміни і до вашої моделі, щоб врахувати це.
Щоб відповісти на ваші явні запитання: у вашому сюжеті відображаються серійні автокореляції / незалежність ваших залишків. Це означає, що ваша модель не відповідає його теперішній формі.