【问题标题】:Fitting a distribution for array with zeros用零拟合数组的分布
【发布时间】:2017-12-15 23:27:10
【问题描述】:

我有来自不同强度的受试者刺激的数据(比如我们有 54 种不同的强度),以下是他们识别相应刺激的百分比:

x =    [0   0   0   0.50    0   0   0   0   0   0   0.5 0   0   0   0   0   0   0   0.125000000000000   0   0.333333333333333   0   0   0.111111111111111   0   0.428571428571429   0   0.285714285714286   0.166666666666667   0   0.1 0   0.400000000000000   0.5 0.4 0.25    0.6 0.727272727272727   0.714285714285714   0.25    0.666666666666667   0.777777777777778   1   0.75    0   1   0.9375  1   1   1   1   1   0.92    0.92]

假设第一个指标是最弱的刺激,最后一个指标是最强的,因为可见刺激越强,受试者就越有可能识别它。 我现在想拟合这些值的分布,以获得称为心理物理曲线的东西(看起来像 this)。

我试过的是:

pd = fitdist(x,distribution);

但这会引发错误,我假设是因为 x 数组中的 0。我还能做什么?

【问题讨论】:

  • 您可以尝试使用logistic regression 进行拟合。我不能告诉你如何使用 matlab 来做到这一点,但它在我的 stats 包中与你提供的数据向量一起工作得很好。
  • 是的,我知道可以选择不同的分布,但我有兴趣了解 matlab 中的实现

标签: matlab plot distribution


【解决方案1】:

按照

中的建议

Fit a sigmoid to my data using MATLAB

“我认为你可以在 Matlab 中使用“曲线拟合”应用程序。你可以在 APPS 的“数学、统计和优化”部分找到它。”

你要做的是定义两个相同长度的向量:

  • 一个有刺激的
  • 一个有回应的人

之后,查看您的文件,您可以尝试使用 matlab 中的“曲线拟合”应用来拟合 sigmoid。

按下生成代码按钮后,matlab 将创建一个函数,该函数将给出相同的结果。

【讨论】:

    猜你喜欢
    • 2020-09-04
    • 2011-11-01
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 2011-09-23
    • 2016-07-05
    相关资源
    最近更新 更多