Подгонка психометрической функции, когда данные не поддаются сигмоидальной подгонке

Я подгоняю психометрическую функцию к ряду данных. Большая часть этих данных поддается сигмоидальной подгонке (т. е. участники могут выполнить задание), но некоторые люди абсолютно не в состоянии выполнить задание. Я планирую сравнить наклоны, полученные в разных условиях, но я уперся в стену с данными о невозможности выполнения задачи.

введите описание изображения здесь

Применив функцию к этим данным, наклон должен быть почти плоским, верно? Однако данные действительно зашумлены, и происходит какая-то странная подгонка — в итоге я получаю ошибочно высокие наклоны. Я использую pypsignifit, параметры, которые я использую, можно увидеть ниже. Любая идея, как остановить это происходит?

num_of_block  = 7
num_of_trials = 20

stimulus_intensities=[3, 7, 13, 20, 27, 32, 39] # stimulus levels
percent_correct=[.38, .75, .6, .43, .7, .65, .43]     # percent correct sessions 1-3
num_observations     = [num_of_trials] * num_of_block      # observations per block
data= np.c_[stimulus_intensities, percent_correct, num_observations]
nafc = 1
constraints = ('unconstrained', 'unconstrained', 'unconstrained', 'Beta(2,20)' )
boot = psi.BootstrapInference ( data, core='ab', sigmoid='gauss', priors=constraints, nafc=nafc )
boot.sample(2000)
print 'pse', boot.getThres(0.5)
print 'slope', boot.getSlope()
print 'jnd', (boot.getThres(0.75)-boot.getThres(0.25))
Данные выглядят действительно так, как если бы участник выступал на случайном уровне. На самом деле, я бы вообще не стал их подгонять, потому что подгонки не могут быть лучше, чем ваш пример.
Именно это и произошло. Попытка сопоставить данные может показаться нелогичной, но я действительно хочу иметь возможность сравнить наклон этих участников с теми, кто показал лучшие результаты, используя что-то вроде t-теста. Отсюда «необходимость» соответствовать.
Затем я пробовал разные психометрические функции (например, логистическую, Вейбулла) до тех пор, пока не находил ту, которая соответствовала бы данным в виде прямой линии с почти нулевым наклоном.
Имеет смысл, но основная проблема, с которой я столкнулся, заключается в том, что мне пришлось бы произвольно выбирать, когда использовать эту альтернативную подгонку. Тот же участник показал себя случайно при другом условии, но кумулятивный гауссов хорошо подходил и показал не сразу очевидный наклон.
Я бы не советовал использовать разные функции для отдельных подгонок, а использовать одну функцию для всех, т. е. выбирать функцию, дающую наилучшие общие решения. Относительно плохих случаев: пытались ли вы заполнить процедуру оценки начальными значениями, близкими к 0,5, для скорости угадывания и скорости истечения?
По размышлении это было очевидно. Сожалею! Заполнение значениями, близкими к 0,5, не помогает, равно как и изменение функции - неясный наклон от первой точки данных все еще присутствует. В идеале я бы просто не использовал эти данные в своих анализах, но, видя, что весь смысл этого предприятия состоит в том, чтобы сравнить тех, кто «хорошо» справляется с задачей, с теми, кто не...
Еще одна идея: попытайтесь ограничить скорость истечения и скорость угадывания значениями от 0,3 до 0,8 (т. е. минимальный и максимальный процент правильных значений в наборе данных, на котором основана ваша картинка).
Это задача типа «Да/Нет» или схема 2AFC?
Что именно показывает сюжет? Это данные одного участника или данные по элементу? Поскольку нет меток для осей, что изображено на осях x и y? Похоже, что ось Y может быть вероятностью получения правильного ответа, поскольку она идет от 0 до 1. Это правильно?
Мне любопытно, решили ли вы проблему за это время и как вы, наконец, подошли к ней.

Ответы (2)

То, что вы ищете, называется моделью иерархических, многоуровневых или случайных эффектов. В вашем конкретном случае решением является иерархическая логистическая регрессия.

Предполагать у с т е { 0 , 1 } это ответ субъекта с на суде т и Икс является зависимой переменной, тогда простая иерархическая модель, которая решает вашу проблему:

у с т Б е р н о ты л л я ( л о г я т ( α с + β с Икс ) )

β с Н ( мю , о )

куда мю - значение населения наклона и β с является оценкой предметного уровня. Грубо, мю является средневзвешенным значением всех β с где вес каждого β с обратно пропорциональна дисперсии оценки β с . Для получения более подробной информации об иерархической логистической регрессии и расширениях простой модели, которые я предложил выше, обратитесь к главе 14 в книге Gelman & Hill (2006).

Применив функцию к этим данным, наклон должен быть почти плоским, верно?

Нет. Наклон должен быть неопределенным . Плоский склон выглядит иначе, скажем ( 10 , 0,61 ) , ( 20 , 0,59 ) , ( 30 , 0,6 ) , ( 40 , 0,58 ) , ( 50 , 0,6 ) . Соответствующая оценка β должен показывать широкий интервал, чтобы вы не могли сделать вывод, что β > 0 или же β < 0 или же β знак равно 0 (как вы предложили).

Как иерархическая модель справится с такой неопределенностью? β с ? Этот β с мало влияет на оценку мю . Вместо β с для этого конкретного предмета будет тянуться к мю . Иерархическая модель эффективно скажет вам, что, если ваши данные неубедительны, она просто предполагает, что субъект является типичным представителем населения (то есть, если мю были оценены надежно) и отбросить ошибочные данные.

Литература: Гельман, А., и Хилл, Дж. (2006). Анализ данных с использованием регрессионных и многоуровневых/иерархических моделей . Издательство Кембриджского университета.

Суть дела заключается в том, что 60% ответов «да», не зависящих от уровня стимула (т. е. проблемных данных), могут возникать как у чрезвычайно чувствительного субъекта (т. е. крутого склона) с умеренным уклоном, так и с большой ошибкой. скорость и чрезвычайно нечувствительный объект (т. е. пологий наклон) с умеренным смещением и низкой скоростью градиента. Для ваших данных соответствие крутого склона/высокой скорости градиента немного лучше, чем пологого наклона/низкой скорости градиента, когда ваш априор скорости градиента основан на бета-распределении. Я предполагаю, что если вы использовали равномерный априор для скорости градиента и, возможно, для скорости угадывания, это приведет к лучшей подгонке пологого наклона. Я бы попробовал что-то вроде «Униформа (0,0.1)».