R'de lineer balistik akümülatör (LBA) simülasyonunu değiştirme


11

"Doğrusal Balistik Akümülatör" modeli (LBA), hızlandırılmış basit karar görevlerinde insan davranışı için oldukça başarılı bir modeldir. Donkin ve arkadaşları (2009, PDF ) bir ana fikri için izin insan davranışsal veriler verilen modelin parametrelerini tahmin ve ben (bazı küçük biçimlendirme değişiklikleri ile) bu kodu kopyalanan ettik kodu sağlar burada . Ancak, modele görünüşte küçük bir değişiklik yapmak istiyorum ama kodda bu değişikliği nasıl yapacağımdan emin değilim.

Kanonik modelle başlamak için, LBA, yarışmacıların aşağıdaki özelliklerde farklılık gösterebileceği şekilde, oldukça garip bir yarışta bir rakip olarak her tepki alternatifini temsil eder:

  • Başlangıç ​​pozisyonu: Bu, U (0, X1) ile sınırlanmış tekdüze bir dağılıma göre yarıştan yarışa değişir.
  • Hız: bu belirli bir yarışta sabit tutulur (hızlanma olmaz), ancak N (X2, X3) tarafından tanımlanan bir Gauss dağılımına göre yarıştan yarışa değişir.
  • Bitiş çizgisi konumu (X4)

Böylece, her yarışmacının X1, X2, X3 ve X4 için kendi değerleri vardır.

Yarış birçok kez tekrarlanır, kazanan ve süreleri her yarıştan sonra kaydedilir. Her kazanan süreye X5 sabiti eklenir.

Şimdi yapmak istediğim değişiklik, başlangıç ​​noktasındaki değişkenliği bitiş çizgisine değiştirmek. Yani, başlangıç ​​noktasının tüm rakipler ve tüm yarışlar için sıfır olmasını istiyorum, böylece X1'i ortadan kaldırıyorum, ancak X4 üzerinde her bir rakibin ortalanmış olduğu tek tip bir dağılım aralığının boyutunu belirten bir parametre, X6 eklemek istiyorum. bitiş çizgisi her yarış için örneklenir. Bu modelde, her yarışmacı X2, X3, X4 ve X6 için değerlere sahip olacak ve hala X5 için rakipler arası değere sahibiz.

Biri bu konuda yardım etmek isterse çok minnettar olurum.

Oh, ve yukarıda açıklanan "X" adlı parametrelerden, bağlanan LBA kod I tarafından kullanılan değişken adlarına bir eşleme sağlamak için: X1 = x0max; X2 = sürüklenme hızı; X3 = sddrift; X4 = chi; X5 = Ter.


1
Kodda belirtildiği gibi hatalar var. Başına, mantıksal işleçlerin ortasına bir boşluk koyun, örneğin <=,> =, == ve! =.
russellpierce

Önerdiğiniz değişiklik kulağa önemsiz geliyor, sorun kodda / çok / gömülü olması. Uyarlar oluşturmak için tesisatçıyı çağırır. Fitter görünüşte modellere parametrelerini verir ve daha sonra gerçek uyum fonksiyonunu optim'e sarar. Optimize edilen işlev obj.
russellpierce

Yanıtlar:


1

Bu tam bir cevap değil. Bu sadece bir işaretçi verme girişimidir. LBA hakkında hiçbir şey bilmiyorum, sadece R kodunu seviyorum, bu yüzden köyünüz değişebilir.

Kodun uygun bölümünü bulmanın anahtarı, Ter değerinin model hesaplamalarının sonucuna basitçe eklendiğini (ve optim ve parametre belirleme sarmalayıcısı 'tesisatçısı') obj fonksiyonundan geri izleme olduğunu bilmekti. Bu beni pqlba ve lbameans'e götürdü. Lbameans'de Ter, tmp $ mean değerinin sonuna eklenir ve sırayla, X1: X4 adlarınız için makul eşleşmeler gibi görünen x0max, chi, drift ve sdI parametreleri olarak kabul edilen n1mean işlevinden türetilir. Ama hiçbir şey lbamean diye bir şey demiyor, beni pqlba'ya geri götürüyor. Bunu kazmak pqlba (Ter eklemeden önce) bir çift fonksiyonları ile sıçrayan görebilirsiniz ve fptpdf sona erer. Bu noktada kafam kesiliyor.

Güzel yanı, eğer haklıysam, fptpdf tüm büyük oyuncuların mevcut olmasıdır. Kötü yanı, 1) parametrelerin başka şeyler yapıp yapmadığını ve fptpdf'den önce kontrol edilmesi gerekip gerekmediğini (muhtemelen) ve 2) X1'in (aka x0max) ortadan kaldırılmasının sorunlu olması nedeniyle daha fazla zaman alacağıdır. x0max tarafından. 0 olarak ayarlamak, belirgin sorunlara neden olur (0'a bölmek kötü mkay?). Bu nedenle, hedeflerinize ulaşmadan önce modelin nasıl çalıştığının daha iyi anlaşılması gerekir.

İyi şanslar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.