Чтобы более точно определить, в чем заключается проблема, попробуйте подогнать свою модель, исключив из нее различные термины. В модели есть несколько терминов, которые могут вас обрушить:
- фиксированные эффекты, включающие
center
, увеличивают до 300 столбцов * 10 ^ 6 строк; в зависимости от того, является ли year
числовым или множительным, термин year*center
может увеличивать до 600 столбцов или (nyears * 300) столбцов
- мне не ясно, использует ли
bam
разреженные матрицы для s(.,bs="re")
терминов; в противном случае у вас будут большие проблемы (2 * 10 ^ 5 столбцов * 10 ^ 6 строк)
По порядку величины вектор из 10 ^ 6 числовых значений (один столбец матрицы вашей модели) занимает 7,6 МБ, поэтому 500 ГБ / 7,6 МБ будут примерно 65000 столбцов ...
Просто догадываюсь, но я бы попробовал пакет gamm4
. Он не предназначен специально для использования с низким объемом памяти, но:
«Gamm4» наиболее полезен, когда случайные эффекты не являются i.i.d. или когда имеется большое количество случайных коэффициентов [sic] (более нескольких сотен), каждый из которых применяется только к небольшой части данных ответа.
Я бы также превратил большинство терминов в случайные эффекты:
gamm4::gamm4(haz ~ s(month, bs = "cc", k = 12)+ sex+ s(age)+
(1|center)+ (1|year)+ (1|year:center)+(1|child), data)
или, если в наборе данных не очень много лет, рассматривать год как фиксированный эффект:
gamm4::gamm4(haz ~ s(month, bs = "cc", k = 12)+ sex+ s(age)+
year + (1|center)+ (1|year:center)+(1|child), data)
Если есть небольшое количество лет, тогда (year|center)
может иметь смысл, чтобы оценить межцентровую вариацию и ковариацию между годами ... если есть много лет, подумайте о том, чтобы вместо этого сделать это плавным термином ...
person
Ben Bolker
schedule
27.12.2017