Modificación de la simulación de acumulador balístico lineal (LBA) en R

11

El modelo de "Acumulador balístico lineal" (LBA) es un modelo bastante exitoso para el comportamiento humano en tareas de decisión simples aceleradas. Donkin et al. (2009, PDF ) proporcionan un código que permite estimar los parámetros del modelo dado los datos de comportamiento humano, y he copiado este código (con algunos cambios menores de formato) aquí . Sin embargo, me gustaría hacer una modificación aparentemente menor al modelo, pero no estoy seguro de cómo lograr esta modificación en el código.

Para comenzar con el modelo canónico, LBA representa cada alternativa de respuesta como un competidor en una carrera bastante extraña, de modo que los competidores pueden diferir en las siguientes características:

  • Posición inicial: esto varía de una carrera a otra según una distribución uniforme limitada por U (0, X1).
  • Velocidad: esto se mantiene constante dentro de una carrera dada (sin aceleración) pero varía de una carrera a otra de acuerdo con una distribución gaussiana definida por N (X2, X3)
  • Posición de la línea de meta (X4)

Por lo tanto, cada competidor tiene su propio conjunto de valores para X1, X2, X3 y X4.

La carrera se repite muchas veces, con el ganador y su tiempo registrado después de cada carrera. Se agrega una constante de X5 a cada tiempo ganador.

Ahora, la modificación que quiero hacer es intercambiar la variabilidad en el punto de partida a la línea de meta. Es decir, quiero que el punto de partida sea cero para todos los competidores y todas las carreras, eliminando así X1, pero quiero agregar un parámetro, X6, que especifique el tamaño del rango de una distribución uniforme centrada en X4 de la cual cada competidor se muestrea la línea de meta para cada carrera. En este modelo, entonces, cada competidor tendrá valores para X2, X3, X4 y X6, y todavía tenemos el valor de competidor cruzado para X5.

Estaría muy agradecido si alguien está dispuesto a ayudar con esto.

Ah, y para proporcionar una asignación de los parámetros con nombre "X" descritos anteriormente a los nombres de variables utilizados por el código LBA que vinculé: X1 = x0max; X2 = driftrate; X3 = sddrift; X4 = chi; X5 = Ter.

Mike Lawrence
fuente
1
Hay errores en el código según lo provisto. En todo momento, coloca un espacio en el medio de los operadores lógicos, por ejemplo, <=,> =, == y! =.
russellpierce
La modificación que sugiere parece trivial, el problema es que está / muy / enterrado en el código. Para crear ajustes, se llama fitter. Al parecer, Fitter proporciona a los modelos sus parámetros y luego ajusta la función de ajuste real de manera óptima. La función que se optimiza es obj.
russellpierce

Respuestas:

1

Esta no es una respuesta completa. Es solo un intento de dar un puntero. No sé nada sobre LBA, solo me gusta el código R, por lo que su millaje puede variar.

La clave para encontrar la sección de código apropiada era saber que el valor Ter simplemente se agregaba al resultado final de los cálculos del modelo (y retroceder desde la función obj que se encuentra en el 'ajustador' de ajuste y parametrización). Eso me llevó a pqlba y lbameans. En lbameans, Ter se agrega como al final de tmp $ mean, a su vez derivado de la función n1mean que acepta como parámetros x0max, chi, drift y sdI que parecían coincidencias razonables para sus nombres X1: X4. Pero, nada llama lbameans, lo que me lleva de vuelta a pqlba. Al profundizar en eso, puedo ver que pqlba (antes de agregar Ter) rebota a través de un par de funciones y termina en fptpdf. En este punto estoy bloqueado.

Lo bueno es que, si estoy en lo cierto, fptpdf tiene todos los principales jugadores presentes. Lo malo es que, 1) tomaría más tiempo ver si los parámetros están haciendo otras cosas y si necesitan ser controlados antes de fptpdf (probablemente), y 2) Eliminar X1 (también conocido como x0max) es problemático porque la función está dividida por x0max. Establecerlo en 0 entonces causa problemas obvios (dividir por 0 es malo, ¿vale?). Por lo tanto, es probable que se necesite una mayor comprensión de cómo funciona el modelo antes de que pueda lograr sus objetivos.

Buena suerte.

russellpierce
fuente