【问题标题】:How do I normalize temporal data to their initial values?如何将时间数据标准化为其初始值?
【发布时间】:2015-05-25 13:49:44
【问题描述】:

我有每 3 秒采集一次的数据。最初,它们总是在较窄的基线范围内(即 100±10)开始,但大约 30 秒后,它们的值开始增加。

这是一个例子。

问题在于,对于每个实验,由于设备校准的变化,初始基线值可能从 y 轴上的不同点(即 100、250、35)开始。

尽管在不同的实验中,大约 30 秒的相对信号增强表现相同,但沿 y 轴可能存在偏移。

我的目的是测量这些曲线的 AUC。由于实验之间的偏移,它们不具有可比性,尽管它们在形状和增强率上可能相同。

因此,我需要对数据进行规范化,以便无论偏移量如何,它们都具有可比较的基线初始值。这可以设置为 0。

你能给我一些关于如何在 Matlab 上完成标准化的建议吗?

理想情况下,输出数据应该是相对信号增强的(相对于基线的百分比)。

例如,上面的基线值将徘徊在 0±10 左右(而不是原始原始值 ~139),并且随着增强,它们将增加到 ~65%(而不是原始原始值 ~230)。

样本数据:

 index       SQMean   
_____    ____________

'0'      '139.428574'
'1'      '133.298706'
'2'      '135.961044'
'3'      '143.688309'
'4'      '133.298706'
'5'      '133.181824'
'6'      '134.896103'
'7'      '146.415588'
'8'      '142.324677'
'9'      '128.168839'
'10'     '146.116882'
'11'     '146.766235'
'12'     '134.675323'
'13'     '138.610382'
'14'     '140.558441'
'15'     '128.662338'
'16'     '138.480515'
'17'     '153.610382'
'18'     '156.207794'
'19'     '183.428574'
'20'     '220.324677'
'21'     '224.324677'
'22'     '230.415588'
'23'     '226.766235'
'24'     '223.935059'
'25'     '229.922073'
'26'     '234.389618'
'27'     '235.493500'
'28'     '225.727280'
'29'     '241.623383'
'30'     '225.805191'
'31'     '240.896103'
'32'     '224.090912'
'33'     '230.467529'
'34'     '248.285721'
'35'     '233.779221'
'36'     '225.532471'
'37'     '247.337662'
'38'     '233.000000'
'39'     '241.740265'
'40'     '235.688309'
'41'     '238.662338'
'42'     '236.636368'
'43'     '236.025970'
'44'     '234.818176'
'45'     '240.974030'
'46'     '251.350647'
'47'     '241.857147'
'48'     '242.623383'
'49'     '245.714279'
'50'     '250.701294'
'51'     '229.415588'
'52'     '236.909088'
'53'     '243.779221'
'54'     '244.532471'
'55'     '241.493500'
'56'     '245.480515'
'57'     '244.324677'
'58'     '244.025970'
'59'     '231.987015'
'60'     '238.740265'
'61'     '239.532471'
'62'     '232.363632'
'63'     '242.454544'
'64'     '243.831161'
'65'     '229.688309'
'66'     '239.493500'
'67'     '247.324677'
'68'     '245.324677'
'69'     '244.662338'
'70'     '238.610382'
'71'     '243.324677'
'72'     '234.584412'
'73'     '235.181824'
'74'     '228.974030'
'75'     '228.246750'
'76'     '230.519485'
'77'     '231.441559'
'78'     '236.324677'
'79'     '229.935059'
'80'     '238.701294'
'81'     '236.441559'
'82'     '244.350647'
'83'     '233.714279'
'84'     '243.753250'

【问题讨论】:

  • 为什么不取第一个(比如 5 秒)的平均值,然后从所有测量值中减去这个值,从而消除实验的直流偏移?
  • 这会给我一个相对的信号增强值吗? (我会将此添加到 OP)
  • 不清楚您要达到的目标
  • 感谢您编辑问题。答案之一是否为您解决了问题?如果不是,我有两个后续问题:基线变化是加法的(全部高 50 单位或低 20 单位)还是乘法(一切都高 20% 或低 10%)。我假设后者,因为否则增强因子没有意义。第二:你知道基线到底什么时候结束并且增加发生吗? – 另外,您能发布一个示例数据集吗?
  • 谢谢。但后来我认为 A. Klomp 的回答是正确的,nrSamp = 10

标签: c matlab plot normalization auc


【解决方案1】:

接近Shai提到的:

blwindow = 1:nrSamp;
DataNorm = 100*(Data/mean(Data(blwindow))-1)

将窗口设置为正确的大小,但是您想确定它,这取决于您的数据。输出 DataNorm 以 % 为单位。

【讨论】:

  • 为什么要从数据和平均基线值之间的除法中减去 1?
  • 该部门将基线平均值设为 100%。与您提到的问题一致:“将达到〜65%”。除以基线给你 165%,而不是“建立”后的 65%。我采取了 1 次 (100%) 来显示 与基线的变化,以百分比基线表示,因此:“增加了 65%”。
  • 谢谢——你认为通过 (x-xmin)/(xmax-xmin) 进行规范化怎么样? stats.stackexchange.com/questions/70801/… 对于我的数据,xmin 将是基线平均值。你有什么理由更喜欢你提议的方式吗?
  • 这将导致信号从 0 平均值开始(基线数据在 0 附近振荡)并在 1 处达到峰值。我不知道您的应用程序是什么,所以我很难说这是怎么回事用过/这意味着什么。请注意,如果您的 xmax 是尖峰,您将对其进行标准化。我通常使用 EMG,我想比较不同受试者(不同轨迹)的响应大小,并且对范围的标准化会将其抛出窗外。如果您愿意,我很乐意与您讨论您的问题和选择。 - 这与您最初的问题没有太大关系。
  • 抱歉,我现在看到您的问题表明您正在寻找 AUC。如果您标准化到范围,您的 AUC 将(主要)由发病时间决定。我会说,在不知道您的用途的情况下,这不是一个好主意。
【解决方案2】:

通常这类问题需要对您正在测量的数据(范围、噪声级别、如果您知道实际数据何时开始等)以及您试图达到的结果有一些更具体的知识。但是,仅根据您的问题并查看您的示例图,我会做这样的事情(假设您的数据在两个数组中,timedata):

initialTimeMax = 25; % take first 25 s
baseSample = data(time <= initialTimeMax); % take part of the data corresponding to the first 25 s
baseSampleAverage = mean(baseSample); % take average to deal with noise
data = data - baseSampleAverage;

如果您不知道数据何时开始,您可以应用平滑滤波器,然后求导,找到其最大值的 x 位置,并将 initialTimeMax 设置为该 x 位置。

【讨论】:

  • 感谢我更新了 OP 以更好地解释,它认为您的解决方案有助于解决部分问题
  • @torr:如果您提出其他问题,我可以尝试扩展答案。你错过了什么?
  • OP 的最后一部分表示我需要获取代表原始原始值百分比的输出值。我认为您的代码的第一部分是从所有后续值中减去基线平均值,但它不会给我那个“相对增强”值。这有意义吗?
猜你喜欢
  • 2019-07-27
  • 2013-06-03
  • 2013-10-09
  • 2020-02-11
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
  • 2021-01-23
  • 1970-01-01
相关资源
最近更新 更多