В настоящее время я работаю над исследованием, которое должно использовать и вычислять значения D Prime для задачи, в которой испытуемым предъявляется изображение с разной скоростью, и они должны сообщить, видели они изображение или нет. Я читал различные базовые статьи о D Prime и его формулах, но до сих пор не совсем понимаю и не уверен, какие значения использовать для его формулы. Например: иногда формула говорит использовать среднее значение, и я не уверен, следует ли мне использовать среднее значение балла субъекта или среднее значение всей выборки.
Вычислять вам нужно знать две вещи: частоту попаданий и частоту ложных срабатываний. Частота попаданий - это доля испытаний, в которых стимул присутствовал, и субъект ответил, что стимул присутствовал. Частота ложных тревог — это доля попыток, в которых стимул отсутствовал, а испытуемый ответил, что стимул присутствовал. Иногда это будет отображаться так:
Когда у вас есть эти два числа, расчет .
Z-преобразование основано на стандартном нормальном распределении, и вы можете найти z-значение для заданной вероятности в таблице или использовать функцию, например, NORMSINV
в Excel или qnorm
в R.
Для большинства приложений вам потребуется вычислить для каждого отдельного предмета, т. и основываются только на данных одного субъекта. Затем вы можете посмотреть, как экспериментальные манипуляции влияют на распределение ценности.
Индекс чувствительности обычно определяется с помощью двух нормально распределенных случайных величин с равной дисперсией со средними значениями и и стандартное отклонение :
В поведенческих экспериментах часто сообщается о вероятности того, что испытуемые отреагировали правильно (либо сказали «да», когда сигнал присутствовал, либо сказали «нет», когда сигнал отсутствовал). Проблема в том, что вероятность правильного ответа зависит от предвзятости испытуемых (насколько часто они отвечают «да»). Преимущество использования заключается в том, что это беспристрастная мера производительности. Пока мы не можем измерить , , и непосредственно в типичных поведенческих экспериментах, можно оценить по частоте попаданий (вероятность ответа «да» при наличии сигнала) и частота ложных тревог (вероятность ответа «да» при отсутствии сигнала):
куда является z-преобразованием.
Даже после прочтения других ответов здесь мне потребовалось некоторое время, чтобы понять, как это сделать, поэтому я оставляю свой ответ здесь.
Расчет d-prime довольно прост:
MATLAB: норминв
d_prime = norminv(hit_rate) - norminv(falsealarm_rate)
Python: scipy.stats.norm.pdf
import scipy.stats as st
d_prime = st.norm.ppf(hit_rate) - st.norm.ppf(falsealarm_rate)
Excel: НОРМ.С.ОБР
d_prime = NORM.S.INV(hit_rate) - NORM.S.INV(falsealarm_rate)
Меня смутило название z-transform . Здесь речь идет о преобразовании вероятности в z-оценку , т.е. выраженную в виде знакового кратного стандартного отклонения (SD, сигма) от среднего значения (mu), с использованием стандартного нормального распределения (mu = 0, sigma = 1).
Это не следует путать с другим z-преобразованием для преобразования сигнала дискретного времени, который представляет собой последовательность действительных или комплексных чисел, в комплексное представление частотной области (z-область или z-плоскость).
Пример на этой странице говорит:
Таким образом, частота попаданий H составляет 20/25 или 0,8.
частота ложных срабатываний составляет 10/25 или 0,4.
z(H) = 0,842 и z(F) = -0,253
d' = 0,824-(-0,253) = 1,095
Код MATLAB ниже дал тот же номер.
norminv(0.8) - norminv(0.4)
ответ = 1,0950
Используя приведенный выше код, я построил зависимость между частотой попаданий и частотой ложных срабатываний.
Как говорится в этой статье , d'prime выглядит странно, когда частота попаданий или ложных срабатываний составляет 0% или 100%.
n = 100;
hit_rate = linspace(0,1,n);
falsealarm_rate = linspace(0,1,n);
d_prime = NaN(n,n);
for i = 1:n
for j = 1:n
d_prime(j,i) = norminv(hit_rate(i)) - norminv(falsealarm_rate(j));
end
end
figure
imagesc(hit_rate, falsealarm_rate, d_prime)
axis square
axis equal
axis tight
ax = gca;
ax.YDir = 'normal';
ax.YTick = 0:0.2:1;
xlabel('Hit rate')
ylabel('False alam rate')
tickdir out # custom function
box off
colormap (redblue)
cb = colorbar
ylabel(cb,'d-prime')
tickdir(cb,'out') # custom function
Криста