Я користувач, більш знайомий з R, і намагаюся оцінити випадкові схили (коефіцієнти відбору) приблизно для 35 осіб протягом 5 років за чотирма змінними середовища проживання. Змінна відповіді - це те, чи місце розташування "використано" (1) або "доступне" (0) середовище ("використання" нижче).
Я використовую 64-розрядний комп'ютер Windows.
У R версії 3.1.0 я використовую наведені нижче дані та вирази. PS, TH, RS та HW - це фіксовані ефекти (стандартизовані, вимірювані відстані до типів середовища проживання). lme4 V 1.1-7.
str(dat)
'data.frame': 359756 obs. of 7 variables:
$ use : num 1 1 1 1 1 1 1 1 1 1 ...
$ Year : Factor w/ 5 levels "1","2","3","4",..: 4 4 4 4 4 4 4 4 3 4 ...
$ ID : num 306 306 306 306 306 306 306 306 162 306 ...
$ PS: num -0.32 -0.317 -0.317 -0.318 -0.317 ...
$ TH: num -0.211 -0.211 -0.211 -0.213 -0.22 ...
$ RS: num -0.337 -0.337 -0.337 -0.337 -0.337 ...
$ HW: num -0.0258 -0.19 -0.19 -0.19 -0.4561 ...
glmer(use ~ PS + TH + RS + HW +
(1 + PS + TH + RS + HW |ID/Year),
family = binomial, data = dat, control=glmerControl(optimizer="bobyqa"))
glmer дає мені оцінки параметрів фіксованих ефектів, які мають для мене сенс, а випадкові нахили (які я трактую як коефіцієнти відбору до кожного типу середовища проживання) також мають сенс, коли я якісно досліджую дані. Імовірність журналу для моделі становить -3050,8.
Однак більшість досліджень в екології тварин не використовують R, оскільки за даними про місцезнаходження тварин просторова автокореляція може зробити стандартні помилки, схильні до помилок типу I. Хоча R використовує стандартні помилки на основі моделі, переважні емпіричні (також Хубер-білі або сендвіч) стандартні помилки.
Поки R наразі не пропонує цей варіант (наскільки мені відомо - БУДЬ ЛАСКА, виправте мене, якщо я помиляюся), SAS робить - хоча я не маю доступу до SAS, колега погодився дозволити мені позичити його комп'ютер, щоб визначити, чи є стандартні помилки істотно змінюються, коли використовується емпіричний метод.
По-перше, ми хотіли переконатися, що при використанні стандартних помилок на основі моделі SAS виробляє аналогічні оцінки R - щоб бути впевненим, що модель задається однаково в обох програмах. Мені байдуже, чи вони однакові - просто схожі. Я спробував (SAS V 9.2):
proc glimmix data=dat method=laplace;
class year id;
model use = PS TH RS HW / dist=bin solution ddfm=betwithin;
random intercept PS TH RS HW / subject = year(id) solution type=UN;
run;title;
Я також спробував різні інші форми, такі як додавання рядків
random intercept / subject = year(id) solution type=UN;
random intercept PS TH RS HW / subject = id solution type=UN;
Я спробував, не вказуючи
solution type = UN,
або коментуючи
ddfm=betwithin;
Незалежно від того, як ми визначаємо модель (і ми намагалися багатьма способами), я не можу отримати випадкові нахили в SAS, щоб віддалено нагадувати вихідний з R - навіть якщо фіксовані ефекти досить схожі. А коли я маю на увазі різні, то я маю на увазі, що навіть знаки не однакові. Імовірність -2 журналу в SAS склала 71344,94.
Не можу завантажити повний набір даних; тому я зробив набір іграшок із лише записами трьох осіб. SAS дає мені вихід за кілька хвилин; в R це займає більше години. Дивно. За допомогою цього набору даних про іграшки я отримую різні оцінки фіксованих ефектів.
Моє запитання: Чи може хтось пролити світло на те, чому оцінки випадкових нахилів можуть бути настільки різними між R та SAS? Чи можу я зробити R або SAS, щоб змінити код, щоб дзвінки давали подібні результати? Я вважаю за краще змінити код в SAS, оскільки я "вірю", що моя R оцінює більше.
Я справді переймаюся цими відмінностями і хочу дійти до суті цієї проблеми!
Мій вихід із набору даних про іграшки, який використовує лише три з 35 осіб у повному наборі даних для R та SAS, включений як jpegs.
Редагування та оновлення:
Як @JakeWestfall допоміг виявити, схили в SAS не включають фіксованих ефектів. Коли я додаю фіксовані ефекти, ось результат - порівняння нахилів R з нахилами SAS для одного фіксованого ефекту, "PS", між програмами: (коефіцієнт вибору = випадковий нахил). Зверніть увагу на збільшення варіації SAS.
0
s і 1
s, R
буде моделювати ймовірність відповіді "1", тоді як SAS буде моделювати ймовірність відповіді "0". Щоб зробити модель SAS вірогідністю "1", вам потрібно написати свою змінну відповіді як use(event='1')
. Звичайно, навіть не роблячи цього, я вважаю, що все одно слід очікувати однакових оцінок відхилень випадкових ефектів, а також тих самих оцінок фіксованого ефекту, хоча і з їхніми ознаками зворотні.
ranef()
функцію, а не coef()
. Перший дає фактичні випадкові ефекти, тоді як останній дає випадкові ефекти плюс вектор фіксованих ефектів. Отже, це пояснює багато причин, по яких цифри, проілюстровані у вашій публікації, відрізняються, але все ще існує суттєва розбіжність, яку я не можу повністю пояснити.
ID
це не є фактором R; перевірте і подивіться, чи це щось змінить.