Складність тестування лінійності в регресії


21

У статистичному моделюванні: дві культури пише Лео Брейман

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

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

Хтось бачив опублікований результат моделювання або теоретичний документ на підтвердження твердження Брімена?


1
Екстрім важко судити, кожна функція наближається до лінійного в деякому діапазоні; як ми знаємо з розкладу серії Тейлора. Чому б не підходити інформаційно-критерійний метод Бернарма та Андерсона до вибору моделі цією проблемою?
Патрік Макканн

Відповіді:


11

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

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

set.seed(41)
p <- 7                                            # Dimensions
n <- 2^p                                          # Observations
x <- as.matrix(do.call(expand.grid, lapply(as.list(1:p), function(i) c(-1,1))))
x <- x + runif(n*p, min=-1, max=1)
x <- cbind(x, x.12 = x[,1]*x[,2])                 # The nonlinear part
x <- apply(x, 2, function(y) (y - mean(y))/sd(y)) # Standardization

Для базової моделі OLS (без нелінійності) ми повинні вказати деякі коефіцієнти та стандартне відхилення залишкової помилки. Ось набір одиничних коефіцієнтів і порівнянний SD:

beta <- rep(c(1,-1), p)[1:p]
sd <- 1

Щоб проілюструвати ситуацію, ось одна важко закодована ітерація моделювання. Він генерує залежну змінну, узагальнює її значення, відображає повну кореляційну матрицю всіх змінних (включаючи взаємодію) та відображає матрицю розсіювання. Потім він виконує регресію OLS. Далі, коефіцієнт взаємодії істотно менший, ніж будь-який з інших коефіцієнтів (всі рівні або ), тому було б важко назвати його "крайнім":1/411

gamma = 1/4          # The standardized interaction term
df <- data.frame(x)
df$y <- x %*% c(beta, gamma) + rnorm(n, sd=sd)
summary(df)
cor(df)*100
plot(df, lower.panel=function(x,y) lines(lowess(y~x)), 
     upper.panel=function(x,y) points(x,y, pch=".", cex=4))
summary(lm(df$y ~ x))

Замість того, щоб пробиратися через всі вихідні дані тут, давайте розглянемо ці дані, використовуючи вихід plotкоманди:

SPM

Сліди низькості на нижньому трикутнику фактично не показують лінійної залежності між взаємодією ( x.12) та залежною змінною ( y) та скромними лінійними зв’язками між іншими змінними та y. Результати OLS підтверджують це; взаємодія є мало вагомою:

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   0.0263     0.0828    0.32    0.751    
xVar1         0.9947     0.0833   11.94   <2e-16 ***
xVar2        -0.8713     0.0842  -10.35   <2e-16 ***
xVar3         1.0709     0.0836   12.81   <2e-16 ***
xVar4        -1.0007     0.0840  -11.92   <2e-16 ***
xVar5         1.0233     0.0836   12.24   <2e-16 ***
xVar6        -0.9514     0.0835  -11.40   <2e-16 ***
xVar7         1.0482     0.0835   12.56   <2e-16 ***
xx.12         0.1902     0.0836    2.27    0.025 *  

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

(Тут є тонкощі того, що саме ми шукаємо. На практиці нам може знадобитися вивчити всі 7 * 6/2 = 21 можливі такі квадратичні взаємодії, а також, можливо, ще 7 квадратичних термінів, а не зосереджуватися на одному терміні як це робиться тут. Ми хотіли б внести виправлення для цих 28 взаємозалежних тестів. Я прямо не виправдовую цю корекцію тут, тому що замість цього я відображаю імітований розподіл p-значень. Ви можете читати показники виявлення безпосередньо з в кінці гістограм виходячи з ваших порогових значень.)

Але давайте не будемо робити цей аналіз лише один раз; зробимо це багато разів, генеруючи нові значення для yкожної ітерації відповідно до тієї ж моделі та тієї ж матриці дизайну. Для цього ми використовуємо функцію, щоб здійснити одну ітерацію та повернути р-значення терміна взаємодії:

test <- function(gamma, sd=1) {
  y <- x %*% c(beta, gamma) + rnorm(n, sd=sd)
  fit <- summary(lm(y ~ x))
  m <- coef(fit)
  n <- dim(m)[1]
  m[n, 4]
}

Я вирішую представити результати моделювання у вигляді гістограм p-значень, змінюючи стандартизований коефіцієнт gammaтерміну взаємодії. По-перше, гістограми:

h <- function(g, n.trials=1000) {
  hist(replicate(n.trials, test(g, sd)), xlim=c(0,1), 
       main=toString(g), xlab="x1:x2 p-value")
}
par(mfrow=c(2,2)) # Draw a 2 by 2 panel of results

Тепер виконати роботу. На 1000 випробувань за моделювання потрібно декілька секунд (і чотири незалежних моделювання, починаючи з заданого значення терміну взаємодії та послідовно вдвічі зменшуючи його):

temp <- sapply(2^(-3:0) * gamma, h)

Результати:

Гістограми

Читаючи назад праворуч, ці графіки показують, що для цієї матриці проектування x, для цього стандартного відхилення помилок sdі для цих стандартизованих коефіцієнтів betaOLS може виявити стандартизовану взаємодію (всього на чверть розмір інших коефіцієнтів ) надійно, понад 80% часу (використовуючи 5-відсотковий поріг для p-значення - пригадайте коротке обговорення виправлення для кількох порівнянь, яке я зараз ігнорую); часто можна виявити розмір взаємодії (приблизно 20% часу); іноді буде виявлено взаємодію розміру1/41/81/16і насправді не можна виявити жодних менших взаємодій. Тут не показана гістограма, що gammaдорівнює , що показує, що навіть при виправленні множинних порівнянь, квадратична взаємодія ця велика майже напевно виявлена.1/2

Чи візьмуть ці взаємодії, які варіюються в розмірах від до , щоб бути «крайнім» чи ні , буде залежати від вашої точки зору, ситуації регресії (як виражається , і ), на скільки незалежних випробуваннях нелінійності ви уявити собі ведення, і темп Брейман, якого я дуже поважаю, чи можливо у вас сокира , щоб розмолоти. Ви, звичайно, можете ускладнити OLS для виявлення нелінійності: просто надуйте так, що вона переповнює нелінійність і одночасно проводить безліч різних тестів на корисність.1/321/4xsdbetasd

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


+1, просто FYI, я помітив , що ви написати свою власну функцію , щоб стандартизувати свої дані, ви можете знайти ? Шкала корисна.
gung - Відновіть Моніку

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

1

Не впевнений, що це дає остаточну відповідь на запитання, але я хотів би поглянути на це . Особливо пункт 2. Див. Також обговорення в додатку А2 до статті .


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