近红外光谱脑功能成像(fNIRS):2.实验设计、指标计算与多重比较

  一、实验设计的策略与方法

        近红外光谱成像(INIRS)作为一种非侵入性脑功能成像技术,为研究大脑活动提供了一种高效、生态效度高的方法。然而,为了充分利用INIRS技术并确保实验结果的准确性和可靠性,研究者必须精心设计实验。这包括合理排布实验条件、选择恰当的刺激呈现方式、决策实验设计类型、精确设定组块时长和事件相关设计的刺激间隔、严格控制可能影响结果的混淆因素、以及合理抽样和分配受试者。

        此外,研究者还需深入理解INIRS技术的特性,包括其在血液动力学响应、空间分辨率和信噪比方面的局限性,并在实验设计中采取相应措施以降低这些局限性对研究结果的影响。通过这些综合考虑和策略运用,INIRS实验设计能够为探索大脑功能和认知过程提供坚实基础。

  1. 实验条件的合理安排:在自变量和其水平确定后,研究者需要精心安排实验条件的呈现顺序和方式。这不仅包括不同条件的组合,也涉及到同一条件下多次试次的排布,目的是有效激发并测量大脑的神经响应。

  2. 刺激呈现方式的策略选择:INIRS实验通常采用两种基本的呈现策略:组块设计和事件相关设计。组块设计通过集中呈现同一类型的刺激,适合于研究需要长时间稳定状态的任务,如观察情绪状态的变化。而事件相关设计则通过随机顺序呈现不同条件的刺激,适合于探索大脑对特定事件的响应,例如在Oddball范式中检测对异常刺激的神经活动。

  3. 设计类型的决策依据:选择使用组块设计还是事件相关设计,取决于实验的具体目标和任务特性。如果实验的重点是检测特定条件下的神经活动是否存在显著差异,组块设计可能更为合适;若目标是分析单个事件的神经响应特性,则事件相关设计可能更有优势。

  4. 关键参数的精确控制:无论是组块设计还是事件相关设计,都涉及到关键参数的控制。对于组块设计,组块时长是一个关键因素,它影响着血氧响应的累积和恢复过程。事件相关设计中,刺激间隔(ISI)的设置则决定了血氧信号的分离度和可检测性。

  5. 混淆因素的有效控制:实验中不可避免地存在一些与自变量无关但可能影响结果的因素。研究者需要通过各种方法,如消除法、恒定法、平衡法或统计控制法,来控制这些混淆因素,以确保实验结果的纯净性。

  6. 受试者样本的代表性:受试者的选取和分配对实验结果的普适性至关重要。研究者应采用随机抽样等方法,确保样本能够代表总体,并通过被试间或被试内设计合理分配受试者,以减少个体差异对实验效应的影响。

  7. INIRS技术特性的深入理解:尽管INIRS技术具有高生态效度和能够提供多维度的血红蛋白浓度变化信息,但其在空间分辨率和信噪比方面的局限性也不容忽视。研究者需要在实验设计中考虑到这些技术特性,采取相应措施来提高数据质量和分析的准确性。

二、个体血液动力学响应指标计算

        当我们使用fNIRS(功能性近红外光谱成像)的技术来观察大脑活动时,我们想要知道每个人对不同刺激(比如声音、图像等)的反应有多强烈。为了做到这一点,我们需要先建立一个模型,这个模型会猜测fNIRS数据中包含了哪些部分,比如大脑在没有刺激时的正常活动、刺激引起的反应,以及一些干扰信号(比如噪音)。

     从个体水平的INIRS(近红外光谱成像)数据中计算血液动力学响应指标,常常使用一般线性模型(GLM)进行数据建模和分析。

  1. 一般线性模型(GLM)

    • GLM用于建模INIRS数据,包括基线活动、刺激诱发的血液动力学响应和噪声等成分。
    • 公式为 y=XB+E,其中 y 是观测信号,X 是设计矩阵,B 是模型参数,E 是残差。
    • 使用最小二乘法估计模型参数\hat{B} = (X^T X)^{-1} X^T Y
  2. 组块设计的血液动力学响应指标计算

         使用哑变量编码实验条件,形成方波形状的任务参考波。接着,通过GLM估计模型参数,得到每种实验条件的血液动力学响应强度。

          也就是说,在进行大脑研究时,我们设计了的实验由几个“组块”组成,每个组块是一种特定的任务或刺激。为了分析大脑对这些任务的反应,我们使用了一种叫做“哑变量”的编码方式,这就像给每个任务贴上不同的标签。

          通过这种编码,我们可以创建一个图形,这个图形看起来像一系列的方波,每个方波代表一个任务组块。这个图形就是我们的“任务参考波”,它帮助我们标记出实验中每个任务开始和结束的时间,类似于嵌入式时序中的时钟信号。

  3. 事件相关设计的血液动力学响应指标计算

           单次刺激的血液动力学响应通过与血液动力学响应函数(HRF)卷积得到。多个刺激的响应通过线性叠加得到。

           通俗的说,我们设计的实验中包含了许多单独的、一次性的刺激(比如突然出现的声音或图像)。我们想要了解大脑对这些单次刺激的反应。

            为了做到这一点,我们使用了一个叫做“血液动力学响应函数(HRF)”的工具,这个工具可以帮助我们预测大脑在接收到刺激后血液流动的变化模式。我们将每个单次刺激与这个HRF进行“卷积”,卷积是一种数学操作,可以让我们把每个刺激的反应模式叠加到一起,形成一个总的反应模式。

            通过这种方式,我们可以得到每个单次刺激对大脑血液流动的影响,然后将这些影响“线性叠加”,也就是简单地把它们加在一起,来得到所有刺激对大脑的总体影响。这样,我们就能知道大脑对一系列单次刺激的总体反应有多强烈了。

  4. 设计矩阵中的其他解释变量

         包括基线、趋势项、噪声等,以提高模型的解释能力和减小残差。
  5. 个体实验效应提取

         使用对比向量从模型参数中提取感兴趣的个体效应量。对比向量 c 与模型参数向量 B 的乘积 cB表示特定的个体效应。

              通过这些步骤,研究人员可以准确地从INIRS数据中提取出个体对不同类型刺激的血液动力学响应指标,为进一步的神经机制研究提供数据支持。

              我们不妨写一段Python代码来模拟INIRS数据,用最小二乘法估计一般线性模型(GLM)的参数。然后,计算预测信号和残差,并绘制观测信号与预测信号以及残差的图形。最后,使用对比向量提取了感兴趣的个体效应量。

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import linregressnp.random.seed(0)
n_samples = 100
n_features = 5
y = np.random.randn(n_samples)  # 观测信号
X = np.random.randn(n_samples, n_features)  # 设计矩阵
B = np.random.randn(n_features)  # 模型参数
E = np.random.randn(n_samples)  # 残差# 使用最小二乘法估计模型参数
B_est, _, _, _ = np.linalg.lstsq(X, y, rcond=None)y_pred = X.dot(B_est)  # 计算预测值residuals = y - y_pred  # 计算残差plt.figure(figsize=(12, 6))
plt.plot(y, label='Observed Signal')
plt.plot(y_pred, label='Predicted Signal')
plt.legend()
plt.title('Observed vs Predicted Signal')
plt.xlabel('Time')
plt.ylabel('Signal')
plt.show()# 绘制残差
plt.figure(figsize=(12, 6))
plt.plot(residuals, label='Residuals')
plt.legend()
plt.title('Residuals')
plt.xlabel('Time')
plt.ylabel('Residual')
plt.show()# 提取感兴趣的个体效应量
c = np.array([1, 0, 0, 0, 0])  # 对比向量,假设感兴趣的是第一个效应
cB = c.dot(B_est)print(f'感兴趣的个体效应量: {cB}')

三、群体统计推断和多重比较

       多重比较问题(multiple comparison)在多通道fNIRS研究中很重要。想象你有一篮子苹果,每个苹果代表一个测量通道,而你想要找出哪些苹果是坏的(即哪些通道显示出显著的实验效应)。如果你只检查一个苹果,并且设定一个规则说,如果这个苹果有超过5%的概率是坏的,你就认为它是坏的。这个规则在只检查一个苹果时是合理的,因为你有5%的误差允许范围。

        但是,如果你现在要检查篮子里所有的苹果(即所有的测量通道),并且对每个苹果都使用同样的5%的规则,那么随着你检查的苹果数量增加,你最终找到至少一个坏苹果的概率就会大大增加。这就是多重比较问题:当你对多个通道进行检验时,即使所有的通道都没有真正的实验效应,你也很可能因为随机误差而错误地认为某些通道是显著的。

        在fNIRS研究中,这意味着如果你对每个通道都使用固定的显著性阈值(比如5%),你最终可能会得到一些假阳性的结果,即错误地认为某些通道在实验中显示出显著效应,而实际上并没有。这就是为什么需要进行多重比较校正,以确保在检查多个通道时,假阳性的概率仍然控制在可接受的范围内。

       多重比较校正方法包括FWE(family wise error)校正和FDR(false discovery rate)校正。FWE校正方法如Bonferroni校正和基于随机场理论的校正方法,而FDR校正方法如Benjamini-Hochberg校正方法。

     1.FWE(family wise error)校正 

        FWE(family wise error)校正是一种多重比较校正方法,其目的是控制在一组统计检验中至少出现一个假阳性错误的概率。在fNIRS研究中,由于涉及到多个测量通道,每个通道都可能显示出显著的实验效应,因此需要进行FWE校正来避免假阳性结果的增加。

        1.1 FWE校正的原理

         FWE校正的基本思想是将所有的通道看作一个“家庭”,每个通道都是这个家庭中的一员。在进行统计检验时,我们设定一个零假设(H0),即“任何家庭成员都未激活”,换句话说就是任何一个通道都没有实验效应的存在。FWE校正的目标是在H0的假设条件下,控制任意(一个或者多个)测量通道出现假激活的概率(即FWE P),从而实现对单通道上的显著性阈值进行校正。

        1.2 在fNIRS研究时的操作

  1. 设定FWE错误率:首先,研究者需要设定一个FWE错误率,通常为0.05,这意味着我们希望控制在所有通道中至少有一个假阳性错误的概率不超过5%。

  2. 计算校正后的显著性阈值:接下来,使用特定的FWE校正方法(如Bonferroni校正)来计算每个通道的校正后的显著性阈值。Bonferroni校正是最简单和直接的FWE校正方法,它假设各个观测通道出现假阳性错误是彼此独立的。校正后的显著性阈值(\alpha_{\text{corrected}})可以通过将原始显著性水平(α)除以通道总数(n)来计算,即 \alpha_{\text{corrected}} = \frac{\alpha}{n}

  3. 应用校正后的显著性阈值:在实际的统计检验中,对每个通道的p值进行比较时,使用校正后的显著性阈值(\alpha_{\text{corrected}})而不是原始的显著性水平(α)。只有当一个通道的p值小于或等于\alpha_{\text{corrected}}时,我们才认为该通道显示出显著的实验效应。

  4. 考虑通道间的相关性:在fNIRS研究中,相邻通道的数据可能存在相关性,这会影响FWE校正的效果。因此,实际操作中可能需要考虑通道间的相关性,并采用更为复杂的校正方法,如基于随机场理论的FWE校正方法。

        通过这些步骤,FWE校正确保了在多通道fNIRS研究中,即使进行了多次统计检验,假阳性结果的概率仍然控制在预设的水平以下,从而提高了研究结果的可靠性。

        2.FDR(false discovery rate)校正    

           FDR(False Discovery Rate)校正是一种多重比较校正方法,它旨在控制假阳性结果的比例,而不是像FWE校正那样控制至少出现一个假阳性错误的概率。FDR校正特别适用于大规模数据集,如fNIRS研究中的多通道数据,因为它在保持较高统计功效的同时,有效地控制了假阳性结果的比例。

        2.1 FDR校正的原理

FDR校正的基本原理是控制假阳性结果在所有被拒绝的零假设中的比例。具体来说,FDR校正的目标是确保在所有被标记为显著的结果中,假阳性结果的比例不超过预设的FDR水平(通常为0.05或0.10)。

        2.2 在fNIRS研究时的操作

  1. 设定FDR水平:首先,研究者需要设定一个FDR水平,通常为0.05或0.10,这意味着我们希望控制在所有被标记为显著的结果中,假阳性结果的比例不超过5%或10%。

  2. 计算校正后的p值:接下来,使用特定的FDR校正方法(如Benjamini-Hochberg (BH) 方法)来计算每个通道的校正后的p值。BH方法是一种常用的FDR校正方法,它按照原始p值从小到大排序,然后对每个p值进行校正。

  3. 确定显著性阈值:在BH方法中,首先将所有通道的原始p值从小到大排序,然后从最小的p值开始,逐步检查每个p值是否满足校正后的条件。具体来说,对于第i个通道,如果其原始p值小于或等于 \left( \frac{i}{n} \right) \times Q,其中n是通道总数,Q是设定的FDR水平,则认为该通道是显著的。

  4. 应用校正后的显著性阈值:在实际的统计检验中,对每个通道的p值进行比较时,使用校正后的显著性阈值。只有当一个通道的p值小于或等于校正后的显著性阈值时,我们才认为该通道显示出显著的实验效应。

  5. 考虑通道间的相关性:与FWE校正类似,在fNIRS研究中,相邻通道的数据可能存在相关性,这会影响FDR校正的效果。因此,实际操作中可能需要考虑通道间的相关性,并采用更为复杂的校正方法,如基于随机场理论的FDR校正方法。

        通过这些步骤,FDR校正确保了在多通道fNIRS研究中,即使进行了多次统计检验,假阳性结果的比例仍然控制在预设的水平以下,从而提高了研究结果的可靠性。

        下面是一段代码,代码模拟了fNIRS研究中的多个通道的p值,然后分别进行了FWE和FDR校正。使用statsmodels库中的multipletests函数进行校正,其中method='bonferroni'用于FWE校正,method='fdr_bh'用于FDR校正。最后,代码绘制了原始p值和校正后的p值,并在图中标记了FWE和FDR的显著性阈值。

        首先得装库:

pip install statsmodels

       详细代码如下:

import numpy as np
import matplotlib.pyplot as plt
from statsmodels.stats.multitest import multipletests# 模拟数据
np.random.seed(0)
n_channels = 50
p_values = np.random.rand(n_channels)  # 模拟p值# FWE校正
alpha_fwe = 0.05
corrected_p_values_fwe = multipletests(p_values, alpha=alpha_fwe, method='bonferroni')[1]# FDR校正
alpha_fdr = 0.05
corrected_p_values_fdr = multipletests(p_values, alpha=alpha_fdr, method='fdr_bh')[1]# 绘制原始p值和校正后的p值
plt.figure(figsize=(14, 7))# 原始p值
plt.subplot(1, 2, 1)
plt.scatter(range(n_channels), p_values, color='blue', label='Original p-values')
plt.axhline(y=alpha_fwe, color='red', linestyle='--', label='FWE threshold')
plt.axhline(y=alpha_fdr, color='green', linestyle='--', label='FDR threshold')
plt.title('Original p-values')
plt.xlabel('Channel')
plt.ylabel('p-value')
plt.legend()# 校正后的p值
plt.subplot(1, 2, 2)
plt.scatter(range(n_channels), corrected_p_values_fwe, color='red', label='FWE corrected p-values')
plt.scatter(range(n_channels), corrected_p_values_fdr, color='green', label='FDR corrected p-values')
plt.axhline(y=alpha_fwe, color='red', linestyle='--', label='FWE threshold')
plt.axhline(y=alpha_fdr, color='green', linestyle='--', label='FDR threshold')
plt.title('Corrected p-values')
plt.xlabel('Channel')
plt.ylabel('Corrected p-value')
plt.legend()plt.tight_layout()
plt.show()

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

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

相关文章

基于stm32开发的红外循迹小车

本项目算是接触32来开发的第一个小项目了,虽然前期用51写过一个循迹小车,以为直接转到32会比较简单,结果还是花了大几天才把小车的参数完全调完,以此来记录下自己的学习历程(注:循迹算法并未加入PID算法&am…

spring boot集成easypoi导出word换行处理

项目场景&#xff1a; spring boot集成easypoi导出word <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.4.0</version> </dependency> 问题描述 spring boo…

最新的 DL/T645 调试工具,工程师必备

分享一个好用的 DL/T645 调试工具&#xff0c;下载地址&#xff1a;https://www.redisant.cn/dl645master 文章目录 最新的 DL/T645 调试工具&#xff0c;工程师必备主要功能软件截图 最新的 DL/T645 调试工具&#xff0c;工程师必备 DL/T645 是中国电力行业的一个通信协议标准…

Day47:LeedCode1143.最长公共子序列 1035.不相交的线 53. 最大子序和 392.判断子序列

1143. 最长公共子序列 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除某些字…

解决uni-app中全局设置页面背景颜色只有部分显示颜色的问题

在页面的style标签设置了背景色但是只显示一部分 <style lang"scss"> .content{background-color: #f7f7f7;height: 100vh; } </style>我们在app.vue里设置就行了 注意一定要是**page{}** <style>/*每个页面公共css */page{background-color: #…

淘宝商品评论电商API接口:提升销量与用户评论的策略

一、API接口简介 淘宝商品评论电商API接口是淘宝开放平台提供的一项服务&#xff0c;联讯数据通过这个接口&#xff0c;商家可以获取关于自己商品的评论数据&#xff0c;包括评论内容、评分、买家等级等信息。这些数据可以帮助商家更好地了解消费者需求&#xff0c;优化商品和服…

724.力扣每日一题7/8 Java

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;算法练习关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 目录 思路 解题方法 时间复杂度 空间复杂度 Code 思路 主要基于数组的…

linux主机离线安装python3环境

一、下载好python版本 Index of /ftp/python/https://www.python.org/ftp/python/ 二、创建文件夹 mkdir /home/python/ 三、上传到主机 四、解压 # 解压xz得到tar包 xz -d Python-3.9.8.tar.xz # 解压tar包 tar -xvf Python-3.9.8.tar 五、指定安装路径 # 进入解压后的…

【Python_GUI】tkinter常用组件——文本类组件

文本时窗口中必不可少的一部分&#xff0c;tkinter模块中&#xff0c;有3种常用的文本类组件&#xff0c;通过这3种组件&#xff0c;可以在窗口中显示以及输入单行文本、多行文本、图片等。 Label标签组件 Label组件的基本使用 Label组件是窗口中比较常用的组件&#xff0c;…

【LeetCode】有效的数独

目录 一、题目二、解法 一、题目 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&…

智能充电(新能源电动车,电单车)云管理系统的定制解决方案

一 系统简介 智能充电&#xff08;新能源电动车&#xff0c;电单车&#xff09;云管理系统 是一套能够实现对充电站/桩的实时通讯、状态监控、故障检测、运营分析、数据统计、策略设置的智能化多任务管理系统。 二 平台概览 智能充电云管理系统 https://chongdianzhuang.itg…

嵌入式Linux系统编程 — 7.4 fork、vfork函数创建子进程

目录 1 父进程与子进程概念 2 fork创建子进程 3 系统调用 vfork()函数 4 vfork与 fork函数如何选择 1 父进程与子进程概念 进程与子进程是操作系统中的一个基本概念&#xff0c;用于描述进程之间的层级关系。下面是对这一概念的简要说明&#xff1a; 父进程&#xff1a;在…

从项目中初识Autosar状态机转换

目录 0 前言 1 状态转换 1.1 BSM TO RMS 1.2 RMS TO RSS 1.3 RMS TO NOS 1.4 RSS TO PBSM 1.5 PBSM TO BSM 1.6 RSS TO NOS 1.7 RSS TO RMS 2 结尾 0 前言 之前在这篇《从项目中初识Autosar网络管理》已经和大家讲了Autosar网络管理的几个状态机以及定时器的大致概念&a…

【网安播报】CocoaPods 曝关键漏洞,应用程序面临供应链攻击风险

1、CocoaPods 曝关键漏洞&#xff0c;数百万 macOS 和 iOS 应用程序面临供应链攻击风险 开源依赖管理器 CocoaPods 中的安全漏洞暴露了数千个软件包&#xff0c;利用这些漏洞的攻击者可以将恶意代码注入合法应用&#xff0c;通过受信任的渠道分发恶意软件&#xff0c;并破坏用户…

Qt QWizard新建向导实例

使用QWizard做新建向导&#xff0c;最简单的实例 class MyWizard : public QWizard { public: MyWizard(QWidget* parent nullptr); QWizardPage* createFirstPage(); QWizardPage* createSecondPage(); QWizardPage* createThirdPage(); }; MyWizard::MyWizard(QWidget* par…

最近点对问题(算法与数据结构设计)

课题内容和要求 最近点对问题&#xff0c;在二维平面上输入n个点列P。其中任一点pi&#xff08;xi&#xff0c;yi&#xff09;&#xff0c;编写程序求出最近的两个点。使用穷举法实现&#xff0c;算法复杂度O(n2)&#xff1b;优化算法&#xff0c;以O(nlog2n)实现这一问题 数…

静脉分割YOLOV8-SEG

静脉分割&#xff0c;YOLOV8*SEG资源-CSDN文库 首先使用YOLOV8-SEG训练&#xff0c;得到PT模型&#xff0c;然后转换成ONNX&#xff0c;OPENCV的DNN调用&#xff0c;从而摆脱PYTORCH依赖&#xff0c;支持C,PYTHON,ANDROID调用

Java信号量semaphore的原理与使用方法

Semaphore的基本概念 在Java中&#xff0c;Semaphore是位于java.util.concurrent包下的一个类。它的核心就是维护了一个许可集。简单来说&#xff0c;就是有一定数量的许可&#xff0c;线程需要先获取到许可&#xff0c;才能执行&#xff0c;执行完毕后再释放许可。 那么&…

尚品汇-(十五)

&#xff08;1&#xff09;快速入门 SpringBoot形式创建 Maven形式创建&#xff1a; 加入依赖&#xff1a; 创建启动类&#xff1a; 设置头文件 就想Jsp的<%Page %>一样 &#xff0c;Thymeleaf的也要引入标签规范。不加这个虽然不影响程序运行&#xff0c;但是你的idea…

顶会FAST24最佳论文|阿里云块存储架构演进的得与失-4.EBS不同架构性能提升思路

3.1 平均延迟与长尾延迟 虚拟磁盘&#xff08;VD&#xff09;的延迟是由其底层架构决定的&#xff0c;具体而言&#xff0c;取决于请求所经历的路径。以EBS2为例&#xff0c;VD的延迟受制于两跳网络&#xff08;从BlockClient到BlockServer&#xff0c;再至ChunkServer&#x…