如果这个问题已经提出,我深表歉意。我是R的初学者,并且没有高级统计背景。我正在尝试确定我在R中的数据的峰数(最大值)。对于那些熟悉GraphPad Prism的人,本质上,我正在尝试通过在“曲线下”区域进行分析并使用阈值来查找“峰数”。 y = 2。我的数据框如下(称为example1)。
time a b c d e f
0 248 413 473 370 501 235
3 243 408 468 356 496 237
6 243 406 476 354 503 235
9 243 412 469 352 500 232
12 245 411 467 355 504 235
15 241 420 483 348 499 227
18 239 416 477 344 493 230
21 236 413 478 338 490 227
24 234 406 475 337 481 229
我的x变量将是第一列,而我的y变量将是其余的列(非常大的数据集-50多个因变量)。对于每个因变量或列,我试图找到峰值数(局部最大值)。我需要将y阈值设为2。
我已经通过融化数据框使用ggplot绘制了数据(下面的代码)。
#Melt data
melted <- melt(example1, id.vars="time")
#Create line graph
ggplot(data=melted, aes(x=time, y=value, group=variable)) +
geom_line(show.legend = TRUE))
如何计算和输出每列的峰数(y = 2阈值)?我需要在曲线分析下做一个区域吗?我希望计算出这样的数据(每列峰数)... a = 0,b = 3,c = 0,d = 6,e = 1,f = 0,但输出结果可能类似于0 ,3、0、6、1、0
我不需要产生另一个图。我只需要每个因变量的峰数输出即可。
包中有findpeaks()
可用的功能pracma
,对于这种类型的东西特别有用。请参阅此处的文档。您可以指定阈值或使用默认设置。还有一些参数可以帮助忽略或包括跨越多个点的峰。
您findpeaks()
输入时间序列向量(意味着确保先按x轴对其进行排序),它将输出一个矩阵,其中行数与峰值数相对应,并且对于每个峰值,您都得到最大值(y值) ),索引,开始索引和结束索引。请参阅下面的example1
数据集利用率:
peak_info <- lapply(example1[,2:7], findpeaks, threshold=2)
> peak_info
$a
[,1] [,2] [,3] [,4]
[1,] 245 5 4 9
$b
[,1] [,2] [,3] [,4]
[1,] 420 6 5 9
$c
[,1] [,2] [,3] [,4]
[1,] 476 3 2 5
[2,] 483 6 5 7
$d
[,1] [,2] [,3] [,4]
[1,] 355 5 4 9
$e
[,1] [,2] [,3] [,4]
[1,] 503 3 2 4
[2,] 504 5 4 9
$f
[,1] [,2] [,3] [,4]
[1,] 237 2 1 4
[2,] 235 5 4 6
[3,] 230 7 6 8
如果只想知道峰数,可以运行以下命令:
> unlist(lapply(peak_info, nrow))
a b c d e f
1 1 2 1 2 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句