Sửa đổi mô phỏng tích lũy đạn đạo tuyến tính (LBA) trong R


11

Mô hình "Tích lũy tuyến tính tuyến tính" (LBA) là một mô hình khá thành công cho hành vi của con người trong các nhiệm vụ quyết định đơn giản được tăng tốc. Donkin et al (2009, PDF ) cung cấp mã cho phép ước tính các tham số của mô hình được cung cấp dữ liệu hành vi của con người và tôi đã sao chép mã này (với một số thay đổi định dạng nhỏ) vào một ý chính ở đây . Tuy nhiên, tôi muốn thực hiện một sửa đổi dường như nhỏ cho mô hình nhưng tôi không chắc làm thế nào để đạt được sửa đổi này trong mã.

Để bắt đầu với mô hình chính tắc, LBA đại diện cho mỗi phản ứng thay thế như một đối thủ cạnh tranh trong một cuộc đua khá kỳ lạ để các đối thủ có thể khác nhau về các đặc điểm sau:

  • Vị trí bắt đầu: điều này thay đổi từ cuộc đua này sang cuộc đua khác theo phân phối thống nhất giới hạn bởi U (0, X1).
  • Tốc độ: tốc độ này được giữ không đổi trong một cuộc đua nhất định (không tăng tốc) nhưng thay đổi từ cuộc đua này sang cuộc đua khác theo phân phối Gaussian được xác định bởi N (X2, X3)
  • Kết thúc vị trí dòng (X4)

Do đó, mỗi đối thủ cạnh tranh có bộ giá trị riêng cho X1, X2, X3 và X4.

Cuộc đua được lặp lại nhiều lần, với người chiến thắng và thời gian của họ được ghi lại sau mỗi cuộc đua. Một hằng số của X5 được thêm vào mỗi lần chiến thắng.

Bây giờ, sửa đổi tôi muốn thực hiện là hoán đổi sự biến đổi ở điểm bắt đầu thành vạch kết thúc. Đó là, tôi muốn điểm bắt đầu bằng 0 cho tất cả các đối thủ và tất cả các chủng tộc, do đó loại bỏ X1, nhưng tôi muốn thêm một tham số, X6, chỉ định kích thước của phạm vi phân phối đồng đều tập trung vào X4 mà mỗi đối thủ cạnh tranh dòng kết thúc được lấy mẫu cho mỗi cuộc đua. Trong mô hình này, sau đó, mỗi đối thủ cạnh tranh sẽ có các giá trị cho X2, X3, X4 và X6 và chúng tôi vẫn có giá trị đối thủ cạnh tranh cho X5.

Tôi sẽ rất biết ơn nếu có ai sẵn sàng giúp đỡ việc này.

Ồ, và để cung cấp ánh xạ từ các tham số có tên "X" được mô tả ở trên đến các tên biến được sử dụng bởi mã LBA mà tôi đã liên kết: X1 = x0max; X2 = trôi dạt; X3 = sddrift; X4 = chi; X5 = Ter.


1
Có lỗi trong mã như được cung cấp. Trong suốt thời gian bạn đặt một khoảng trắng ở giữa các toán tử logic, ví dụ <=,> =, == và! =.
russellpierce

Việc sửa đổi mà bạn đề xuất nghe có vẻ tầm thường, vấn đề là nó bị / rất / bị chôn vùi trong mã. Để tạo ra sự phù hợp, nó gọi fitter. Fitter rõ ràng cung cấp cho các mô hình các tham số của nó và sau đó kết thúc chức năng phù hợp thực tế trong tối ưu. Các chức năng được tối ưu hóa là obj.
russellpierce

Câu trả lời:


1

Đây không phải là một câu trả lời đầy đủ. Nó chỉ là một nỗ lực để đưa ra một con trỏ. Tôi không biết gì về LBA, tôi chỉ thích mã R, vì vậy phần kê khai của bạn có thể thay đổi.

Chìa khóa để tìm phần mã thích hợp là biết rằng giá trị Ter chỉ đơn giản được thêm vào kết quả cuối cùng của các tính toán mô hình (và quay lại từ hàm obj có trong trình bao bọc tối ưu hóa và tham số hóa 'fitter'). Điều đó dẫn tôi đến pqlba và lbameans. Trong lbameans, Ter được thêm vào cuối tmp $ mean, lần lượt xuất phát từ hàm n1mean, chấp nhận là tham số x0max, chi, drift và sdI có vẻ phù hợp với tên X1: X4 của bạn. Nhưng, không có gì gọi lbameans, dẫn tôi trở lại pqlba. Đi sâu vào đó tôi có thể thấy rằng pqlba (trước khi thêm Ter) bị trả về thông qua một vài hàm - và kết thúc tại fptpdf. Tại thời điểm này tôi bị cản trở.

Phần thú vị là, nếu tôi đúng, fptpdf có tất cả những người chơi chính có mặt. Phần xấu là, 1) sẽ mất nhiều thời gian hơn để xem liệu các tham số có đang làm những việc khác hay không và cần được kiểm soát trước fptpdf (có thể) và 2) Loại bỏ X1 (còn gọi là x0max) có vấn đề vì chức năng được chia bằng x0max. Đặt nó thành 0 sau đó gây ra các vấn đề rõ ràng (chia cho 0 là mkay xấu?). Do đó, một sự hiểu biết lớn hơn về cách thức hoạt động của mô hình có thể là cần thiết trước khi bạn có thể đạt được mục tiêu của mình.

Chúc may mắn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.