Rでの線形弾道アキュムレータ(LBA)シミュレーションの変更


11

「線形弾道アキュムレータ」モデル(LBA)は、高速で単純な意思決定タスクにおける人間の行動に対してかなり成功したモデルです。Donkin et al(2009、PDF)は、人間の行動データを与えられたモデルのパラメーターを推定することを可能にするコードを提供しています。ただし、モデルに一見マイナーな変更を加えたいのですが、コードでこの変更を行う方法がわかりません。

正規モデルから始めるために、LBAはかなり奇妙なレースの競合者として各応答の選択肢を表し、競合者は次の特性が異なる場合があります。

  • 開始位置:U(0、X1)で区切られた一様分布に従って、これは人種によって異なります。
  • 速度:これは、特定のレース(加速なし)内で一定に保たれますが、N(X2、X3)で定義されるガウス分布に従ってレースごとに異なります
  • フィニッシュラインポジション(X4)

したがって、各競合他社には、X1、X2、X3、およびX4の独自の値のセットがあります。

レースは何度も繰り返され、各レースの後に勝者とその時間が記録されます。X5の定数がすべての勝利時間に追加されます。

ここで変更したいのは、開始点の変動を終了線に入れ替えることです。つまり、すべての競技者とすべてのレースで開始点をゼロにしてX1を排除したいのですが、各競技者のX4を中心とする均一分布の範囲のサイズを指定するパラメーターX6を追加したいと思います。フィニッシュラインはレースごとにサンプリングされます。このモデルでは、各競合他社にはX2、X3、X4、およびX6の値があり、X5には競合他社全体の値があります。

これを手伝ってくれる人がいたら、とてもありがたいです。

ああ、そして上記の "X"という名前のパラメーターから、私がリンクしたLBAコードが使用する変数名へのマッピングを提供するために:X1 = x0max; X2 =ドリフト率; X3 = sddrift; X4 =カイ; X5 = Ter。


1
提供されたコードにエラーがあります。全体を通して、<=、> =、==、!=などの論理演算子の真ん中にスペースを入れます。
russellpierce 2011

あなたが提案する変更は些細なことのように聞こえますが、問題はそれがコードに/ very /埋められていることです。はめあいを作成するために、フィッターを呼び出します。Fitterは明らかにモデルにパラメーターを与え、実際のフィット関数をoptimにラップします。最適化される関数はobjです。
russellpierce 2011

回答:


1

これは完全な答えではありません。これは単なる指針を示すための試みです。私はLBAについて何も知りません、私はRコードが好きなので、あなたのミレージは変わるかもしれません。

コードの適切なセクションを見つけるための鍵は、Terの値がモデル計算の最終結果に単純に追加されたこと(およびoptimおよびパラメーター化ラッパー 'fitter'にあるobj関数からのバックトラック)を知ることでした。それは私をpqlbaとlbameansに導きました。lbameansでは、Terはtmp $ meanの最後に追加されます。これは、X1:X4名に適切に一致するように見えるパラメーターx0max、chi、drift、およびsdIを受け入れるn1mean関数から派生します。しかし、lbameansを呼び出すものは何もないため、私をpqlbaに戻しました。それを掘り下げると、pqlba(Terを追加する前)が2つの関数で跳ね返り、最終的にfptpdfになることがわかります。この時点で私は困惑しています。

良い点は、私が正しければ、fptpdfに主要なプレーヤーがすべて存在することです。悪い点は、1)パラメータが他のことを行っているかどうかを確認するのに時間がかかり、fptpdf(おそらく)の前に制御する必要があること、および2)X1(別名x0max)の削除は関数が分割されているため問題があることです。 x0maxによる。それを0に設定すると、明らかな問題が発生します(0で除算するのはよくありません)。したがって、目的を達成する前に、モデルがどのように機能しているかをより深く理解することがおそらく必要です。

幸運を。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.