У мене виникають проблеми з ефективністю використання MCMCglmm
пакету в R для запуску моделі зі змішаними ефектами. Код виглядає так:
MC1<-MCMCglmm(bull~1,random=~school,data=dt,family="categorical"
, prior=list(R=list(V=1,fix=1), G=list(G1=list(V=1, nu=0)))
, slice=T, nitt=iter, ,burnin=burn, verbose=F)
За даними є близько 20 000 спостережень, вони об'єднані приблизно в 200 шкіл. Перед запуском я видалив усі невикористані змінні з фрейму даних і видалив усі інші об'єкти з пам'яті. Проблема, яка у мене є, полягає в тому, що запускати потрібно дуже багато часу, якщо я не скорочую ітерації до неприпустимо невеликої кількості. З 50 000 ітерацій потрібно 5 годин, і у мене є багато різних моделей. Тож я хотів би знати, чи є способи прискорити виконання коду чи інші пакунки, які я можу використовувати. Я використовую, MCMCglmm
тому що я хочу довірчі інтервали для випадкових ефектів.
З іншого боку, я сподівався отримати новий ПК пізніше цього року, але з невеликою долею мені вдасться досягти цього, тому мені було цікаво, як найкраще витратити обмежену кількість грошей на нове обладнання - більше оперативної пам’яті , швидший процесор і т. д. Переглядаючи диспетчер завдань, я не вважаю, що проблема оперативної пам'яті (вона ніколи не перевищує 50% фізичної кількості), але використання процесора не набагато перевищує 50%, що вважає мене дивним . Моя поточна настройка - це ядро Intel i5 2,66 ГГц, 4 Гб оперативної пам’яті, 7200 об / хв. Чи розумно просто отримати найшвидший процесор за рахунок додаткової оперативної пам’яті? Я також цікавився, як впливає розмір кешу 3-го рівня процесора на такі статистичні обчислювальні проблеми?
Оновлення: Запитавши мета-SO, мені порадили перефразувати питання та опублікувати повідомлення про Superuser. Для цього мені потрібно детальніше розповісти про те, що відбувається "під капотом" у MCMCglmm. Я маю рацію, думаючи, що основна частина обчислень витрачається на оптимізацію - я маю на увазі пошук максимуму якоїсь складної функції? Чи є матричною інверсією та / або іншими операціями лінійної алгебри також звичайною операцією, яка може спричинити вузькі місця? Будь-яка інша інформація, яку я могла би надати спільноті Суперусерів, була б найвдячнішою.
lmer()
моделей до великих наборів даних може зайняти досить багато часу, особливо якщо це потрібно робити багато разів. Відповідь на ваше запитання може полягати в паралельних обчисленнях, хоча інші користувачі (наприклад, @DirkEddelbuettel) були б набагато корисніші, ніж мені в цьому. Також є ймовірність, що ви отримаєте кращі відповіді на stackoverflow.
glmer
(як ви знаєте з інших моїх публікацій), і це займає близько 20 секунд, але проблема полягає в тому, що він не дає довірчих інтервалів або стандартних помилок, і з того, що я читав у архіві розсилки, автор архіву lme4
Пакет говорить, що розподіл вибірки випадкових ефектів може бути дуже перекошеним, тому про ці статистичні дані не повідомляється. Насправді я виявив, MCMCglmm
що в моєму випадку вони наближаються до нормальних (не те, що це дуже допомагає - я просто кажу). Було б краще, якби я просив перенести його на SO?