Modificando a simulação do acumulador balístico linear (LBA) em R

11

O modelo "Acumulador Balístico Linear" (LBA) é um modelo bastante bem-sucedido para o comportamento humano em tarefas de decisão simples e rápidas. Donkin et al (2009, PDF ) fornecem código que permite estimar os parâmetros do modelo, dados dados comportamentais humanos, e eu copiei esse código (com algumas pequenas alterações de formatação) para uma essência aqui . No entanto, eu gostaria de fazer uma modificação aparentemente pequena no modelo, mas não tenho certeza de como conseguir essa modificação no código.

Para começar com o modelo canônico, o LBA representa cada alternativa de resposta como um competidor em uma corrida bastante estranha, de forma que os concorrentes possam diferir nas seguintes características:

  • Posição inicial: varia de raça para raça, de acordo com uma distribuição uniforme delimitada por U (0, X1).
  • Velocidade: é mantida constante dentro de uma determinada corrida (sem aceleração), mas varia de corrida para corrida, de acordo com uma distribuição gaussiana definida por N (X2, X3)
  • Posição da linha de chegada (X4)

Assim, cada competidor tem seu próprio conjunto de valores para X1, X2, X3 e X4.

A corrida é repetida várias vezes, com o vencedor e seu tempo registrado após cada corrida. Uma constante de X5 é adicionada a cada tempo de vitória.

Agora, a modificação que quero fazer é trocar a variabilidade no ponto de partida para a linha de chegada. Ou seja, quero que o ponto de partida seja zero para todos os competidores e todas as corridas, eliminando X1, mas quero adicionar um parâmetro, X6, que especifique o tamanho do intervalo de uma distribuição uniforme centralizada em X4 a partir da qual cada competidor a linha de chegada é amostrada para cada corrida. Nesse modelo, então, cada concorrente terá valores para X2, X3, X4 e X6, e ainda temos o valor entre concorrentes para X5.

Ficaria muito grato se alguém estiver disposto a ajudar com isso.

Ah, e para fornecer um mapeamento dos parâmetros nomeados "X" descritos acima para os nomes de variáveis ​​usados ​​pelo código LBA I vinculado: X1 = x0max; X2 = driftrato; X3 = desvio padrão; X4 = chi; X5 = Ter.

Mike Lawrence
fonte
1
Existem erros no código, conforme fornecido. Ao longo de você coloca um espaço no meio de operadores lógicos, por exemplo, <=,> =, == e! =.
russellpierce
A modificação que você sugere parece trivial, o problema é que ela está / muito / oculta no código. Para criar ataques, chama mais apto. O Fitter aparentemente fornece aos modelos seus parâmetros e, em seguida, envolve a função de ajuste real em otimização. A função que está sendo otimizada é obj.
22411 russellpierce

Respostas:

1

Esta não é uma resposta completa. É apenas uma tentativa de dar um ponteiro. Não sei nada sobre o LBA, apenas gosto do código R, portanto sua milhagem pode variar.

A chave para encontrar a seção apropriada do código era saber que o valor Ter foi simplesmente adicionado ao resultado final dos cálculos do modelo (e retorno da função obj que está no wrapper de otimização e parametrização 'fitter'). Isso me levou a pqlba e lbameans. Em lbameans, o Ter é adicionado no final de tmp $ mean, por sua vez, derivado da função n1mean, que aceita como parâmetros x0max, chi, drift e sdI, que pareciam correspondências razoáveis ​​para seus nomes X1: X4. Mas nada chama lbameans, levando-me de volta ao pqlba. Examinando isso, vejo que o pqlba (antes de adicionar o Ter) salta através de algumas funções - e termina em fptpdf. Neste ponto, estou frustrado.

A parte boa é que, se eu estiver certo, o fptpdf tem todos os principais players presentes. A parte ruim é que, 1) levaria mais tempo para ver se os parâmetros estão fazendo outras coisas e precisam ser controlados antes do fptpdf (provavelmente), e 2) A eliminação do X1 (também conhecido como x0max) é problemática porque a função é dividida por x0max. Configurá-lo como 0 causa problemas óbvios (dividir por 0 é ruim mkay?). Portanto, provavelmente é necessário um maior entendimento de como o modelo está funcionando antes que você possa atingir seus objetivos.

Boa sorte.

russellpierce
fonte