Я створив симуляцію, яка відповіла б опису Бреймана і виявила лише очевидне: результат залежить від контексту та від того, що мається на увазі під "крайнім".
Можна було б сказати дуже багато, але дозвольте обмежитися лише одним прикладом, який проводиться за допомогою легко модифікованого 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 / 41- 1
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
команди:
Сліди низькості на нижньому трикутнику фактично не показують лінійної залежності між взаємодією ( 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
і для цих стандартизованих коефіцієнтів beta
OLS може виявити стандартизовану взаємодію (всього на чверть розмір інших коефіцієнтів ) надійно, понад 80% часу (використовуючи 5-відсотковий поріг для p-значення - пригадайте коротке обговорення виправлення для кількох порівнянь, яке я зараз ігнорую); часто можна виявити розмір взаємодії (приблизно 20% часу); іноді буде виявлено взаємодію розміру1 / 41 / 81 / 16і насправді не можна виявити жодних менших взаємодій. Тут не показана гістограма, що gamma
дорівнює , що показує, що навіть при виправленні множинних порівнянь, квадратична взаємодія ця велика майже напевно виявлена.1 / 2
Чи візьмуть ці взаємодії, які варіюються в розмірах від до , щоб бути «крайнім» чи ні , буде залежати від вашої точки зору, ситуації регресії (як виражається , і ), на скільки незалежних випробуваннях нелінійності ви уявити собі ведення, і темп Брейман, якого я дуже поважаю, чи можливо у вас сокира , щоб розмолоти. Ви, звичайно, можете ускладнити OLS для виявлення нелінійності: просто надуйте так, що вона переповнює нелінійність і одночасно проводить безліч різних тестів на корисність.1 / 321 / 4x
sd
beta
sd
Коротше кажучи, подібне моделювання може довести все, що вам подобається, якщо ви просто його налаштували та інтерпретували правильно. Це говорить про те, що окремий статистик повинен проводити власні дослідження, що підходять до конкретних проблем, з якими вони стикаються, щоб зрозуміти особистісні та глибокі розуміння можливостей та слабких місць процедур, якими вони користуються.