加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

心理测量函数(psychometric function)

(2015-12-31 22:45:45)
标签:

psychophysics

分类: 统计

心理测量函数(PF):


α:决定函数在坐标轴上的位置.


β:决定曲线的斜率.

我们永远不会知道它俩真实的值,而拟合曲线的过程就是为了发现这两个参数的值,并且通过这两个参数可以得出一条曲线,它能够很好的匹配实验数据.

另外4个额外的值构成了PF的完整描述: 1-2是描述精确度的. 3-4决定是否能很好的匹配数据

1.阈限的标准差 

2.斜率的标准差 

3.deviance

4.deviance的p值


拟合PF的几个步骤.

1.选择刺激水平

2.选择方程来拟合数据

3.拟合方程

4.评估方程参数的error

5.决定方程的拟合优度


一一展开:

1.选择刺激水平和trial数

trial数:

拟合一个PF需要多少个trial的数据?越多越准确,即拟合的参数越准,比如threshold,slope,point of subjective equality(PSE). 所以答案就是你想要你得到的参数有多准. 比如一个人期望不同条件下能产生非常不同的阈限和PSE,那么就需要很少的trial数就够了.

刺激的水平数:    

基本的原则就是让刺激的水平可以保证被试的正确率保持在机会水平-100%之间.

刺激水平的线性VS对数分布:

要么是线性要么是对数分布.什么时候选择线性,什么时候选对数呢? 选对数的理由:可以让值的分布处于一个更大的区间.当然这并没有意义,你可以让线性分布也变得像对数分布的区间一样大. 对于用对数的一个更加合理的理由就是,你想获得相对小的区间在低水平处,相对大的区间在高水平处. 想让区间随着刺激的值增长而增长的一个理由就是这个过程和大脑感受到刺激的过程类似. 这个过程就是随着刺激强度的不短增强,人感受到的刺激强度的增强是越来越小的.

获得对数刺激水平的公式: 

StimLevels = logspace(log10(a),log10(b),n)   %[a和b是最小,最大值, n是你想获得的水平数]


2.选择方程来拟合数据

方程的种类:  一共有5种可以用来拟合数据的方程:如下

①Cumulative Normal②Logistic③Weibull④Gumbel⑤Hyperbolic Secant

http://s11/mw690/001odOUdgy6YdaF7mAi7a&690function)" TITLE="心理测量函数(psychometric function)" />


除了上面给出的α 和 β(这两个参数描述潜在的感觉机制);还需要两个参数来完整的描述一个PF. 他们是:γ (gamma) 和 λ (lambda).这两个参数不描述感觉机制,描述的是chance-level performance,即猜测率和lapsing(lapse rate)

γ (gamma):即使我们相信被试不会去猜测, 但是如果被试去猜了的话,他会有一定几率猜对.在迫选任务里就是1/可选的个数.

lapsing(lapse rate):在一小部分trial中,被试的反应会独立于刺激水平.比如被试打了个喷嚏没有看到刺激,那么即使刺激的强度很大,被试仍然可能做出一个错误的反应. 所以基于此,PF会得出一个渐近线,比1稍微小一点,渐近线的最大值 = 1- λ.

四个参数中,研究者经常只是对前两个感兴趣,因为他俩反映潜在的神经机制.猜测率是由任务决定的. 而lapse告诉我们例如被试的动机之类的事情.研究者通常只允许a和贝塔发生改变,另外两个参数会设置一个固定值.猜测率就是1/m,laspe为0.


方程的选择:

到底如何选择方程? 有2个准则,第一是基于priori theory of the true internal shape of PF.

第二个准则是基于a posteriori considerations.


拟合方程的方法:

有许多不同的方法来找到对于数据最匹配的拟合曲线.这里说的是经常用到的一个拟合PF的方法. 最大似然比准则. 下面举个例子看看到底是怎么来拟合的. 例子中用到的是一个2AFC任务.首先定义包含数据的向量:

StimLevels = [0.01 0.03 0.05 0.07 0.09 0.11];

NumPos = [45 55 72 85 91 100];  %不同条件下正确数

OutOfNum = [100 100 100 100 100 100]; %不同条件下的trial数

接下来指定想用的方程:

PF = @PAL_Logistic;

接下来的三个步骤设置一些拟合过程中要用到的参数:

paramsValues = [0.05 50 .5 0]; %初始的猜测[a,贝塔, guess rate,lapse rate]

paramsFree = [1 1 0 0]; %指定那几个参数是可以变的.1代表可变,0代表固定值.

[paramsValues LL exitflag] = PAL_PFML_Fit(StimLevels,NumPos,OutOfNum,paramsValues,paramsFree,PF) %拟合!

得到的结果:

paramsValues = 0.0584 66.4520 0.5 0

LL = -273.4364

exitflag = 1

0.0584 66.4520 是拟合得到的a和贝塔的值. exitflag = 1 代表拟合成功.


评估errors:

因为a和贝塔是基于有限的trial数的,所以即使我们重复实验,得到的值也不可能一样,因为我们的大脑有噪音. 所以获得一些对于我们得到的a和贝塔值的评估是有一定意义的.最好的方法是重复实验1000次,但是我们没时间.所以理想的方法就是使用”bootstrap analysis”. 它基本的意思就是计算机基于实验所获得的数据集,从中随机产生假设的数据.每个hypothetical data集拿去拟合PF,然后得到a和贝塔,最后这么多a和贝塔的差异会被计算,这些也就是对参数的评估.

执行bootstrap的方程是PAL_PFML_BootstrapParametric.它需要你先执行过拟合操作.因为bootstrap函数中要填拟合得到的a和贝塔值. 还有一个额外的参数B,代表你想模拟多少个数据集.

eg:

B=400;

[SD paramsSim LLSim converged] = PAL_PFMA_BootstrapParametric(StimLevels,OutOfNum,paramsValues,paramsFree,B,PF);

输出会是这样的:

SD = 0.0035 11.7045 0 0

这四个值就是对a,贝塔,guess rate,lapse rate的评估.


评估拟合优度:

goodness-of-fit是测量你拟合得到的PF到底怎么样的指标. 拟合优度可以告诉我们是否一个方程比另一个方程更加适合.比如通过它,我们可以决定到底使用5个方程中的哪一个.

通过比较两个模型,可以得到拟合优度. 相关函数为PAL_PFML_GoodnessOfFit,里面要填的值就之前PF fit过得到的值. 

eg:

B=1000;

[Dev pDev DevSim converged] = PAL_PFML_GoodnessOfFit(StimLevels,NumPos,OutOfNum,paramsValues,paramsFree,B,PF);

pDev代表实际的goodness-of-fit. 取值范围0-1,越大,fit越好.


 

  

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有