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


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.