本章要点
介绍常规的用mean square error拟合心理物理曲线
在介绍完常见的心理物理曲线后,我们接下来考虑如何在心理学实验中应用它。
我们先来思考一个简单情境:一个被试在每个试次回答正确的概率是𝜃, 求被试完成了10个试次,结果是1110010101 (1=正确, 0=错误)的概率?
由概率论知识可知
p ( d a t a ∣ θ ) = θ k ∗ ( 1 − θ ) n − k p(data|\theta) = \theta^k * (1-\theta)^{n-k} p ( d a t a ∣ θ ) = θ k ∗ ( 1 − θ ) n − k 其中,k为正确的试次数,n为总试次数
基于上述思考,我们进一步考虑:以上的问题假定每个试次被试做对的概率是恒定的𝜃, 如果每个试次中呈现的刺激强度大小不一,我们如何得到被试每个试次里面做对的概率?想要回答这个问题,就需要用到心理物理曲线。
接下来我们考虑一个RDK的感知决策实验,探究如何使用心理物理曲线去回答上述疑问。
首先我们预定义好一个心理物理函数,这里我们选用前文介绍的Weibull函数
复制 import numpy as np
import matplotlib . pyplot as plt
from scipy . optimize import minimize
# 先定义weibull函数
def weibullfun ( x , alpha , beta , gamma , g ):
k = ( - np . log (( 1 - g ) / ( 1 - gamma ))) ** ( 1 / beta )
y = 1 - ( 1 - gamma ) * np . exp ( - ( k * x / alpha ) ** beta ) # hack here to avoid the complex number of
return y 然后我们依据前人研究里设置的RDK的coherence水平,绘制Weibull函数中不同coherence水平下的正确率
接下来我们模拟出每种coherence水平各1000个试次的数据
cohTrial是一个长度nTrialPerCoh x 5的数组,代表每个trial的coherence level
data是一个长度nTrialPerCoh x 5的数组,代表每个trial被试做对(1)和做错(0)
至此,我们模拟出了五种coherence水平的总共5000个试次的数据,每个数据点包含coherence和决策结果两类信息。我们需要利用这些数据来拟合心理物理函数。
这里介绍一种常见的拟合方法——最大似然估计(Maximum Likelihood Estimation,MLE)。假定 f(x|θ) 是 Weibull 函数,其中 θ=α 为曲线的参数,数据D = [d1, d2, ... di ...]。这里我们固定 γ= 0.5, g = 0.82, β = 3。那么负对数似然函数为:
N L L ( θ ) = − L L ( θ ) = − log ( L ( θ ) ) = − ∑ i log ( f ( d i ∣ θ ) ) NLL(\theta) = -LL(\theta) = -\log(L(\theta))= -\sum_{i} \log(f(d_i|\theta)) N LL ( θ ) = − LL ( θ ) = − log ( L ( θ )) = − i ∑ log ( f ( d i ∣ θ )) 那么我们求θ,就是
θ ^ = arg min θ N L L ( θ ) \hat{\theta} = \arg \min_{\theta} NLL(\theta) θ ^ = arg θ min N LL ( θ ) 下面我们写出负对数似然函数 这里我们只假定threshold α是需要估计的自由参数
下面来优化这个负对数似然函数
注意,前面的模拟过程有一个前提假设,即假定所有的试次,被试都是按照心理物理曲线严格执行。但在现实世界中,显然存在被试不严格按心理物理曲线进行决策的情况。因此,这里引入失误率(lapse rate)。lapse rate是指被试因为各种原因(比如走神了)不是按照心理曲线来做反应,而是以随机的策略来做决策。假定在所有试次中,有𝜏 比例的试次被试会完全走神,随机选择,那么概率是:
p ( d i ∣ θ ) = ( 1 − τ ) ∗ f ( d i ) ∣ θ ) + τ ∗ γ p(d_i | \theta) = (1 - \tau) * f(d_i)|\theta) + \tau * \gamma
p ( d i ∣ θ ) = ( 1 − τ ) ∗ f ( d i ) ∣ θ ) + τ ∗ γ