信号检测理论(Signal Detection Theory, SDT)

news2024/10/5 18:39:20

信号检测理论(Signal Detection Theory, SDT)模拟是一种实验设计,用于研究和理解在存在噪声或不确定性的情况下如何做出决策。在心理学、认知科学、工程学和许多其他领域,信号检测理论都非常重要。


一、基础概念:

在信号检测理论的模拟中,通常会涉及以下几个关键概念:

信号(Signal):需要被检测或识别的刺激或信息。
噪声(Noise):干扰信号检测的背景或无关信息。
决策标准(Decision Criterion):用于判断信号是否存在的阈值或标准。

击中(Hit):当信号实际存在且被正确检测到时的情况。
漏报(Miss):当信号实际存在但未被检测到时的情况。
虚报(False Alarm):当信号实际上不存在但被错误地检测为存在时的情况。
正确否定(Correct Rejection):当信号实际上不存在且被正确地判断为不存在时的情况。

请添加图片描述


二、统计决策理论:

(1)两个分布的重叠程度决定了被试对信号和噪音的辨别力(感受性)

请添加图片描述
d ′ d' d被称为辨别力指数(灵敏度)。可以有两个分布的均值差来决定。
重叠越多,辨别力指数越小,辨别力越弱。
重叠越少,辨别力指数越大,辨别力越强。

特别地, d ′ = 0 d'=0 d=0,均值相同,完全重叠(不一定重合),无法辨别。

(2)被试的决策标准决定了其反应倾向:

定义 C C C:决策标准
C的右边判断为“有”,左边判断为“无”

定义 β β β:似然比,可由 Y (击中) Y (虚报) \frac{Y(击中)}{Y(虚报)} Y(虚报)Y(击中)得到,一般给出β后,即可通过计算来确定C的位置(大小)。

β > 1 β>1 β>1 :严格——被试的判断倾向于“无”
β = 1 β=1 β=1 :中等——被试的判断“均等”
β < 1 β<1 β<1 :宽松——被试的判断倾向于“有”
请添加图片描述

(3)ROC曲线

一般也叫等感受曲线,有以下几个特点:

[1]击中率和虚报率呈正相关关系,C增大,二者同时减小;C减小,标准变松,二者同时增大。
[2]击中率不等于虚报率

  • 存在3中极端情况:
    (1)击中率=0:C趋近于正无穷
    (2)击中率=1,C趋近于负无穷
    (3) d ′ = 0 d'=0 d=0:曲线完全重叠,均值相同
    这三种情况意义不大

[3]越往左下,反应标准越严, β β β越大,C越大
[4] d ′ d' d越大,曲线区分度越大

请添加图片描述


三、示例:

下面是一个示例(Julia文件):

1)
Let’s simulate 2 signal distributions, plot them, and compute d’ and the probabilities of the four outcomes with a specific criterion

using Distributions 
using PlotlyJS

# --- Signal Detection Theory Simulation --- 信号检测理论(Signal Detection Theory, SDT)

# 1. Parameters
dPrime = 1.5  # Sensitivity (d'),灵敏度(判别力指数)
criterion = 0.8  # Response criterion,判断标准

# 2. Distributions
dist_noise = Normal(0, 1)  # Noise distribution 噪声分布
dist_signal = Normal(dPrime, 1)  # Signal + noise distribution 信号+噪声分布

# 3. Generate trials
nTrials = 1000
signalPresent = rand(Bernoulli(0.5), nTrials)  # 生成一个布尔数组,每个元素表示一次试验中信号是否出现,50% signal presence
stimuli = signalPresent .* rand(dist_signal, nTrials) + (1 .- signalPresent) .* rand(dist_noise, nTrials)

# 4. Apply criterion
responses = stimuli .> criterion # 生成一个布尔值数组responses,大于criterion的为true,否则为false
# 5. Calculate outcomes
hits = sum(responses[signalPresent]) # 击中
misses = sum(.!responses[signalPresent]) # 漏报
falseAlarms = sum(responses[.!signalPresent]) # 虚报
correctRejections = sum(.!responses[.!signalPresent]) # 正确否定

# --- Visualization with PlotlyJS ---

# Generate data for histograms
noise_data = rand(dist_noise, 10000)
signal_data = rand(dist_signal, 10000)
y = max
# Create the histogram traces
noise_trace = PlotlyJS.histogram(x=noise_data, name="Noise", opacity=0.5)
signal_trace = PlotlyJS.histogram(x=signal_data, name="Signal + Noise", opacity=0.5)

# Create the criterion line trace,画判断标准线
criterion_trace = PlotlyJS.scatter(
    x=[criterion, criterion], y=[0, 600],
    mode="lines",
    name="Criterion",
    line=attr(color="red", dash="dash")
)

# Create the plot
plt = PlotlyJS.plot(
    [noise_trace, signal_trace, criterion_trace],
    Layout(
        xaxis_title="Internal Response",
        yaxis_title="Frequency",
        title="Signal Detection Theory Demonstration",
        barmode="overlay"
    )
)

# Display the plot
display(plt)

# Display results
println("d': ", dPrime)
println("Criterion: ", criterion)
println("Hits: ", hits, " (", round(hits / sum(signalPresent) * 100, digits=2), "%)")
println("Misses: ", misses, " (", round(misses / sum(signalPresent) * 100, digits=2), "%)")
println("False Alarms: ", falseAlarms, " (", round(falseAlarms / sum(.!signalPresent) * 100, digits=2), "%)")
println("Correct Rejections: ", correctRejections, " (", round(correctRejections / sum(.!signalPresent) * 100, digits=2), "%)")

画出分布图像:
在这里插入图片描述
上图红色虚线就是C,蓝色分布是噪声,红色是信号。

输出:

d': 1.5
Criterion: 0.8
Hits: 369 (73.95%)
Misses: 130 (26.05%)
False Alarms: 89 (17.76%)
Correct Rejections: 412 (82.24%)

ROC曲线相关:

using Distributions
using PlotlyJS

# --- Signal Detection Theory Simulation (Multiple d') --- 多个d'的信号检测理论模拟

# 1. Parameters
dPrimes = [0.5, 1.0, 1.5, 2.0]  # Range of sensitivities
criteria = range(-3, 3, length=100)  # Range of criteria for ROC ,C变化范围

# 2. Distributions
dist_noise = Normal(0, 1)  # Noise distribution 噪声分布

# --- ROC Analysis and Visualization ---
# 准备一个ROC曲线图的布局,为后续添加具体的ROC曲线数据做准备。
plt = PlotlyJS.plot(Layout(
    xaxis_title="False Alarm Rate",
    yaxis_title="Hit Rate",
    title="ROC Curves for Different d'",
    xaxis_range=[0, 1],
    yaxis_range=[0, 1],
    xaxis_constrain="domain",  # Ensure the x-axis stays within the plot area
    yaxis=attr(scaleanchor="x",  # Link y-axis scaling to x-axis
                 scaleratio=1),    # Maintain 1:1 aspect ratio
 ))

# Add diagonal reference line
PlotlyJS.add_trace!(plt, PlotlyJS.scatter(x=[0, 1], y=[0, 1], mode="lines", line=attr(color="gray", dash="dash"), name="Chance Level"))

for dPrime in dPrimes
    # 根据不同的d'生成不同的信号分布。因为噪声分布固定,所以d'的大小决定了信号分布的位置。
    dist_signal = Normal(dPrime, 1)  # Signal + noise distribution 信号+噪声分布

    # 3. Generate trials (for each d')
    nTrials = 1000
    signalPresent = rand(Bernoulli(0.5), nTrials)
    stimuli = signalPresent .* rand(dist_signal, nTrials) + (1 .- signalPresent) .* rand(dist_noise, nTrials)

    # 4. ROC Calculation
    hitRates = zeros(length(criteria))
    falseAlarmRates = zeros(length(criteria))

    for (i, criterion) in enumerate(criteria)
        responses = stimuli .> criterion
        hits = sum(responses[signalPresent])
        falseAlarms = sum(responses[.!signalPresent])

        hitRates[i] = hits / sum(signalPresent)
        falseAlarmRates[i] = falseAlarms / sum(.!signalPresent)
    end

    # 5. Add ROC Curve to Plot
    PlotlyJS.add_trace!(plt, PlotlyJS.scatter(x=falseAlarmRates, y=hitRates, mode="lines", name="d' = $dPrime"))
end

# Display the plot
display(plt)

画出ROC曲线:
在这里插入图片描述
可以发现随 d ′ d' d增大图像越往上


思考:

上面四个率和机器学习中的性能评估指标有相似之处:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2190328.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac ToDesk 无法连接网络

描述 网络连接的是 Wi-Fi&#xff0c;打开浏览器能跟正常浏览内容&#xff0c;说明 Wi-Fi 是正常的。 现象&#xff1a;显示网络连接失败&#xff0c;一直无法登陆&#xff01; 检查防火墙是没有阻止ToDesk 的任何连接&#xff0c;说明防火墙也是正常的。 解决 检查登录项&a…

3dsMax添加天空盒

点击渲染&#xff0c;环境 &#xff0c; 点击位图 找到要设置的天空HDR&#xff0c;可以使用HDR(EXR)贴图 一个可以下载HDR贴图的网站 https://polyhaven.com/hdris在渲染的时候不要使用使用微软输入法&#xff0c;3dsmax会卡死&#xff0c; 在渲染的时候不要使用使用微软…

胤娲科技:AI重塑会议——灵动未来,会议新纪元

你是否曾经历过这样的会议场景&#xff1a;会议纪要不准确&#xff0c;人名张冠李戴&#xff1b;错过会议&#xff0c;却无从回顾关键内容&#xff1b;会议效率低下&#xff0c;时间白白流逝&#xff1f; 这些问题仿佛成了现代会议的“顽疾”。然而&#xff0c;随着AI技术的飞速…

苹果荔枝柠檬梨柿子数据集 水果数据集 树上1500张 带标注 voc yolo 5类

苹果荔枝柠檬梨柿子数据集 水果数据集 树上1500张 带标注 voc yolo 5类 苹果荔枝柠檬梨柿子数据集 名称 苹果荔枝柠檬梨柿子数据集 (Apple, Litchi, Lemon, Pear, Persimmon Dataset) 规模 图像数量&#xff1a;1498张图像。类别&#xff1a;5种水果类别。标注个数&#xff…

linux基础指令的认识

在正式学习linux前&#xff0c;可以简单认识一下linux与win的区别 win&#xff1a;是图形界面&#xff0c;用户操作更简单&#xff1b;在刚开始win也是黑屏终端 指令操作&#xff0c;图形界面就是历史发展的结果。Linux&#xff1a;也存在图形界面比如desktop OS&#xff1b;但…

Redis实现点赞

部分实体类 TableId(value "id", type IdType.AUTO)private Long id;/*** 商户id*/private Long shopId;/*** 用户id*/private Long userId;/*** 用户图标*/TableField(exist false)private String icon;/*** 用户姓名*/TableField(exist false)private String …

lxml安装失败的一个解决方案

下载离线安装包&#xff0c;网址 https://pypi.org/simple/lxml/需要对应自己的python版本&#xff0c;网上教程很多&#xff0c;不再赘述 下载完成后将该文件&#xff0c;重命名&#xff08;下面是下载好的文件&#xff0c;上面是重命名的文件&#xff0c;就是在第二个版本&a…

【Linux】进程周边之优先级

目录 一、优先级 1.为什么要有进程优先级&#xff1f; 2.什么是进程优先级&#xff1f; 3.优先级的初始设定 3.1 PRI 和 NI 3.2如何修改优先级&#xff1f;&#xff08;sudo/root&#xff09; 3.2.1 概念&#xff1a; 3.2.2 如何查看进程的优先级&#xff1f; 3.3.3 或…

【深度学习】自动微分——Autodiff or Autograd?

论文 [1].CSC321 Lecture 10: Automatic Differentiation [2].Automatic Differentiation in Machine Learning:a Survey 关键点总结&#xff1a; 雅可比矩阵&#xff1a;对于多变量函数 y ⃗ f ( x ⃗ ) \vec{y} f(\vec{x}) y ​f(x )&#xff0c;其梯度矩阵&#xff08;…

GPT新功能Canvas!对普通用户最友好的功能!

原文链接&#xff1a;GPT4新功能Canvas!对普通用户最友好的功能&#xff01; ChatGPT更新了一个极度优雅&#xff0c;对普通人极度友好的功能。 而且&#xff0c;顺带&#xff0c;又碾死了一批AI赛道里&#xff0c;做AI文本编辑和Code Copilot的初创企业&#xff0c;一波端掉…

自动驾驶核心技术:感知融合、规划决策、控制执行

1、前言 简单来说&#xff0c;实现自动驾驶需要解决三个核心问题&#xff1a;“我在哪?我要去哪?我该如何去?”能完整解决这三个问题就是真正的自动驾驶。 目前&#xff0c;自动驾驶汽车关键技术主要包括环境感知、精准定位、决策与规划、控制与执行、高精地图与车联网V2X以…

ZYNQ:GPIO 之 MIO 按键中断实验

实验目的 使用底板上的 PS 端的用户按键 PS_KEY1 通过中断控制核心板上 LED2 的亮灭 简介 Zynq 芯片的 PS 部分是基于使用双核 Cortex-A9 处理器和 GIC pl390 中断控制器的 ARM 架构。中断结 构与 CPU 紧密链接&#xff0c;并接受来自 I/O 外设&#xff08;IOP&#xff09…

P4240 毒瘤之神的考验

毒瘤之神的考验 - 洛谷 定义 猜想与有关 发现上式1-1 上下两边乘gcd(i,j)有 带入1-1有 化简 n<m 经典代换Tke eT/k 然后化简不了了 这个时候我们可以把一部分看出一个整体 分析这两个函数&#xff0c;发现f(x) 可以在下预处理出来 g(x,y)有以下递推式 因此也可以在下处理…

三、流程控制

流程控制 选择结构&#xff08;if-else&#xff09;选择结构&#xff08;when&#xff09;循环结构&#xff08;for&#xff09;循环结构&#xff08;while&#xff09; 经过前面的学习&#xff0c;我们知道&#xff0c;程序都是从上往下依次运行的&#xff0c;但是&#xff0c…

事件抽取(Event Extraction, EE)

一、引言 事件抽取&#xff08;Event Extraction, EE&#xff09;是信息抽取领域中的一个重要任务&#xff0c;旨在从非结构化文本中识别和抽取事件相关的信息。事件抽取通常包括识别事件触发词、事件类型以及事件中的参与者、时间、地点等元素&#xff0c;最终将这些信息结构…

【进阶OpenCV】 (4)--图像拼接

文章目录 图像拼接1. 读取图片2. 计算图片特征点及描述符3. 建立暴力匹配器4. 特征匹配5. 透视变换6. 图像拼接 总结 图像拼接 图像拼接是一项将多张有重叠部分的图像&#xff08;这些图像可能是不同时间、不同视角或者不同传感器获得的&#xff09;拼成一幅无缝的全景图或高分…

论文翻译 | Model-tuning Via Prompts Makes NLP Models Adversarially Robust

摘要 近年来&#xff0c;NLP从业者集中于以下实践:(i)导入现成的预训练(掩码)语言模型;(ii)在CLS令牌的隐藏表示(随机初始化权重)上附加多层感知器;(iii)在下游任务(MLP-FT)上微调整个模型。这一过程在标准的NLP基准上产生了巨大的收益&#xff0c;但这些模型仍然很脆弱&#x…

mysql单表查询·3

准备好表 create table product(id int primary key,name varchar(32),price double,category varchar(32) ); # 插入数据 INSERT INTO product(id,name,price,category) VALUES(1,联想,5000,c001); INSERT INTO product(id,name,price,category) VALUES(2,海尔,3000,c001); I…

加密与安全_HOTP一次性密码生成算法

文章目录 HOTP 的基础原理HOTP 的工作流程HOTP 的应用场景HOTP 的安全性安全性增强措施Code生成HOTP可配置项校验HOTP可拓展功能计数器&#xff08;counter&#xff09;计数器在客户端和服务端的作用计数器的同步机制客户端和服务端中的计数器表现服务端如何处理计数器不同步计…

好用的苹果笔推荐!五大高品质王者款!附避坑宝典助你选购无忧!

现在平板和电容笔在一定程度上可以替代传统的笔和纸&#xff0c;很多用户在购置iPad后&#xff0c;急需找到一款好用的电容笔。但由于苹果原装笔的价格太过高昂&#xff0c;让许多人不得不选择平替电容笔&#xff01;下面我就为大家推荐五款高品质的电容笔&#xff0c;并分享几…