Estou tendo problemas de desempenho usando o MCMCglmm
pacote no R para executar um modelo de efeitos mistos. O código fica assim:
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)
Existem cerca de 20.000 observações nos dados e elas estão agrupadas em cerca de 200 escolas. Soltei todas as variáveis não utilizadas do quadro de dados e removi todos os outros objetos da memória, antes da execução. O problema que tenho é que leva muito tempo para ser executado, a menos que eu reduza as iterações para um número inaceitavelmente pequeno. Com 50.000 iterações, leva 5 horas e eu tenho muitos modelos diferentes para executar. Então, eu gostaria de saber se existem maneiras de acelerar a execução do código ou outros pacotes que eu poderia usar. estou usandoMCMCglmm
porque quero intervalos de confiança para os efeitos aleatórios.
Por outro lado, eu esperava adquirir um novo PC ainda este ano, mas com um pouco de sorte, talvez eu possa trazê-lo adiante, então fiquei pensando em como gastar melhor uma quantia limitada de dinheiro em hardware novo - mais RAM , CPU mais rápida etc. Observando o gerenciador de tarefas, não acredito que a RAM seja o problema (ela nunca fica acima de 50% do uso físico), mas o uso da CPU também não fica muito acima de 50%, o que me parece estranho . Minha configuração atual é um intel core i5 2.66GHz, 4GB RAM, 7200rpm HDD. É razoável obter a CPU mais rápida possível, à custa de RAM adicional? Também me perguntei sobre o efeito do tamanho do cache da CPU do nível 3 em problemas estatísticos de computação como este?
Atualização: Após ter solicitado a meta SO , fui aconselhado a reformular a pergunta e publicar no Superusuário. Para fazer isso, preciso fornecer mais detalhes sobre o que está acontecendo "sob o capô" no MCMCglmm. Estou certo ao pensar que a maior parte do tempo de computação é gasta na otimização - quero dizer, encontrar o máximo de alguma função complicada? A inversão de matriz e / ou outras operações de álgebra linear também são uma operação comum que pode estar causando gargalos? Qualquer outra informação que eu pudesse fornecer à comunidade de Superusuários seria recebida com gratidão.
fonte
lmer()
modelos a grandes conjuntos de dados pode demorar um pouco, principalmente se você precisar fazer isso várias vezes. Uma resposta para sua pergunta pode estar na computação paralela, embora outros usuários (por exemplo, @DirkEddelbuettel) sejam muito mais úteis do que eu com isso. Também há uma chance de você obter melhores respostas no stackoverflow.glmer
(como você sabe nas minhas outras postagens) e isso leva cerca de 20 segundos, mas o problema é que ele não fornece intervalos de confiança ou erros padrão e, pelo que li em um arquivo de listas de discussão, o autor dolme4
O pacote diz que a distribuição amostral dos efeitos aleatórios pode ser muito distorcida, portanto essas estatísticas não são relatadas. Na verdade, descobri deMCMCglmm
tão longe que, no meu caso, elas estão se aproximando do normal (não que isso ajude muito - só estou dizendo). Seria melhor se eu solicitasse a migração para o SO?Respostas:
Por que não executá-lo no serviço de computação em nuvem EC2 da Amazon ou em um serviço semelhante?
MCMCpack
é, se bem me lembro, implementado principalmente em C, por isso não será muito mais rápido, a menos que você diminua a complexidade do modelo, as iterações etc. Com o EC2 ou serviços similares de computação em nuvem, você pode ter várias instâncias a qualquer momento especificações desejadas e execute todos os seus modelos de uma só vez.fonte