Як я можу пояснити просторову коваріацію у лінійній моделі?


10

Фон

У мене є дані польового дослідження, в якому є чотири рівні лікування та шість повторень у кожному з двох блоків. (4x6x2 = 48 спостережень)

Блоки розташовані приблизно на відстані 1 милі, а всередині блоків - сітка з 42, 2 м х 4 м ділянок та шириною 1 м; моє дослідження використовувало лише 24 сюжети у кожному блоці.

Я хотів би оцінити оцінку просторової коваріації.

Ось приклад аналізу з використанням даних з одного блоку без обліку просторової коваріації. У наборі даних plot- це графічний ідентифікатор, xце розташування x і розташування yy кожного ділянки з графіком 1, орієнтованим на 0, 0. levelце рівень обробки та responseє змінною відповіді.

layout <- structure(list(plot = c(1L, 3L, 5L, 7L, 8L, 11L, 12L, 15L, 16L, 
17L, 18L, 22L, 23L, 26L, 28L, 30L, 31L, 32L, 35L, 36L, 37L, 39L, 
40L, 42L), level = c(0L, 10L, 1L, 4L, 10L, 0L, 4L, 10L, 0L, 4L, 
0L, 1L, 0L, 10L, 1L, 10L, 4L, 4L, 1L, 1L, 1L, 0L, 10L, 4L), response = c(5.93, 
5.16, 5.42, 5.11, 5.46, 5.44, 5.78, 5.44, 5.15, 5.16, 5.17, 5.82, 
5.75, 4.48, 5.25, 5.49, 4.74, 4.09, 5.93, 5.91, 5.15, 4.5, 4.82, 
5.84), x = c(0, 0, 0, 3, 3, 3, 3, 6, 6, 6, 6, 9, 9, 12, 12, 12, 
15, 15, 15, 15, 18, 18, 18, 18), y = c(0, 10, 20, 0, 5, 20, 25, 
10, 15, 20, 25, 15, 20, 0, 15, 25, 0, 5, 20, 25, 0, 10, 20, 
25)), .Names = c("plot", "level", "response", "x", "y"), row.names = c(NA, 
-24L), class = "data.frame")

model <- lm(response ~ level, data = layout)      
summary(model)

Запитання

  1. Як я можу обчислити коваріаційну матрицю та включити її до моєї регресії?
  2. Блоки дуже різні, і існують сильні взаємодії блоків *. Чи доцільно їх аналізувати окремо?

1
Діаграми 37 і 39 обидва при x = 18, y = 10. Друкарська помилка?
Аарон вийшов із переповнення стека

@Aaron дякую, що вказали на це. у = [0,10]. Виправлено.
Девід Лебоуер

Відповіді:


10

1) Ви можете моделювати просторову кореляцію з nlmeбібліотекою; Ви можете обрати кілька можливих моделей. Див. Сторінки 260-266 Pinheiro / Bates.

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

library(nlme)
m0 <- gls(response ~ level, data = layout)  
plot(Variogram(m0, form=~x+y))

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

Один варіант кореляційної структури - сферична структура; це можна було б моделювати наступним чином.

m1 <- update(m0, corr=corSpher(c(15, 0.25), form=~x+y, nugget=TRUE))

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

> anova(m0, m1)
   Model df     AIC      BIC    logLik   Test  L.Ratio p-value
m0     1  3 46.5297 49.80283 -20.26485                        
m1     2  5 43.3244 48.77961 -16.66220 1 vs 2 7.205301  0.0273

2) Ви також можете спробувати включити xта yбезпосередньо в модель; це може бути доречно, якщо модель кореляції залежить від більш ніж просто відстані. У вашому випадку (дивлячись на фотографії ssqu), здається, що для цього блоку все одно у вас може бути діагональний візерунок.

Тут я оновлюю оригінальну модель замість m0, оскільки я змінюю лише фіксовані ефекти, тому обидві моделі повинні бути придатними, використовуючи максимальну ймовірність.

> model2 <- update(model, .~.+x*y)
> anova(model, model2)
Analysis of Variance Table

Model 1: response ~ level
Model 2: response ~ level + x + y + x:y
  Res.Df    RSS Df Sum of Sq      F   Pr(>F)   
1     22 5.3809                                
2     19 2.7268  3    2.6541 6.1646 0.004168 **

Для порівняння всіх трьох моделей, вам потрібно встановити їх усі glsта метод максимальної ймовірності замість методу REML за замовчуванням.

> m0b <- update(m0, method="ML")
> m1b <- update(m1, method="ML")
> m2b <- update(m0b, .~x*y)
> anova(m0b, m1b, m2b, test=FALSE)
    Model df      AIC      BIC     logLik
m0b     1  3 38.22422 41.75838 -16.112112
m1b     2  5 35.88922 41.77949 -12.944610
m2b     3  5 29.09821 34.98847  -9.549103

Пам'ятайте, що, особливо, маючи знання про дослідження, ви могли б створити модель, яка краща за будь-яку з них. Тобто модель m2bне обов'язково повинна вважатися найкращою поки.

Примітка. Ці обчислення були виконані після зміни значення x графіку 37 на 0.


дякую за корисну відповідь; незрозуміло, чому в частині 2 ви оновили modelзамість m0, напр. m2 <- update(m0, .~.+x*y)так що всі три моделі можна порівняти за допомогою anova(m0,m1,m2); після цього, m2це великий невдаха (AIC = 64), здається, що ваша частина
David LeBauer

ps останній рядок має бути "після зміни y-значення графіку 37 на 5"; фактичне значення дорівнює 0, але результати рівнозначні.
David LeBauer

Якщо ви порівнюєте m0, m1і m2як ви пропонуєте, ви отримуєте попередження: Fitted objects with different fixed effects. REML comparisons are not meaningful. Для порівняння фіксованих ефектів вам слід використовувати регулярну максимальну ймовірність замість REML. Див. Редагування.
Аарон вийшов із переповнення стека

дякую за всю вашу допомогу. Я не впевнений, чому, але я отримую помилки, коли намагаюся вписати інші кореляційні структури, наприклад, використовуючи corExp, як у прикладі Пінейро та Бейтса. Я відкрив питання щодо ТА щодо цієї помилки, але ваш внесок буде вдячний.
David LeBauer

4

1) Яка ваша просторова пояснювальна змінна? Схоже, площина x * y була б поганою моделлю просторового ефекту.

сюжет лікування та відповідей

i=c(1,3,5,7,8,11,14,15,16,17,18,22,23,25,28,30,31,32,35,36,39,39,41,42)
l=rep(NA,42)[i];l[i]=level
r=rep(NA,42)[i];r[i]=response
image(t(matrix(-l,6)));title("treatment")
image(t(matrix(-r,6)));title("response")

2) Бачачи, як блоки розташовані на відстані 1 милі, і ви очікуєте побачити ефекти лише за 30 метрів, я б сказав, що цілком доречно їх аналізувати окремо.


Візуалізація корисна, але якщо порівнювати нижній правий верхній правий рисунок, мені здається, що розташування має сильніший ефект, ніж рівень. (ps Я думаю, що l [i] = відповідь має бути r [i] = ...)
David LeBauer

Так. Ефект локації є чудовим, і тому ви дійсно хочете, щоб була хороша модель для цього, перш ніж почати оцінювати ефекти лікування. На жаль, є багато відсутніх даних, тому важко сказати, що це має бути - найкращим, що я можу придумати, був би ефект моделювання місця як середній показник реакції сусідів + випадковий компонент, а потім спробування лікування на цьому . Це дуже підозріло, тому будь-які додаткові знання про домен були б цінними. друкарська помилка.
ssqu

@sesqu ... даних немає, дані з усіх 24 випадково розташованих сюжетів є.
Девід Лебоуер

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