对R中向量的连续元素应用t.test



我有一个由n个元素组成的向量。

我想知道如何以有效的方式完成以下操作(这基本上是一个rooling计算(:

  1. 提取具有索引1到k 的元素

  2. 提取索引为k+1到2k 的元素

  3. 对那些元素进行t.test
  4. 提取索引为2到k+1的元素
  5. 提取索引为k+2到2k+1的元素
  6. 对那些元素进行t.test。。。。。。7.重复,直到矢量结束

我不需要查看提取值,只需要获取一些统计信息(例如[1]$statistics(。

我可以用循环来做,但我想知道如何用一些函数来做(例如application(。所有最好的

从您的伪代码中不清楚您是否真的期望向量具有n=3*k个元素,但我就是这样编程的。

set.seed(123)
x = rnorm(15)
o = 1:5
k = 5
sapply(o, function(oi){
x1 = x[oi:(k + oi - 1)]
x2 = x[(k + oi):(2 * k + oi)]
t.test(x1, x2)$statistic
})

结果是

t           t           t           t           t 
0.04435004  1.28433640  1.67879015  0.11191044 -0.19398686 

你也可以计算出一些更新公式,用于在t检验中的每对向量上添加和减去一个新元素,但这似乎不值得。

您可以使用sapply,为了清晰起见,这里封装在一个函数中:

multiple_ttest <- function(vec, k)
{
sapply(seq(length(vec) - 2 * k), function(x){
t.test(vec[x + 1:k], vec[x + (k + 1):(2 * k)])$statistic
})
}
multiple_ttest(rnorm(100), 20)
#>          t          t          t          t          t          t          t 
#> -0.6253586 -1.1680595 -1.2979357 -1.1051207 -1.4668645 -0.6156220 -0.2470322 
#>          t          t          t          t          t          t          t 
#> -1.2416802 -0.1763081 -0.1682269 -0.2490938  0.4569783  0.7721602  1.4383522 
#>          t          t          t          t          t          t          t 
#>  1.5530524  2.1523397  2.3221591  2.1876903  1.7248729  1.6149827  1.6919704 
#>          t          t          t          t          t          t          t 
#>  1.9747871  2.3833846  2.2826131  2.2337453  2.2225939  1.6284361  2.2067872 
#>          t          t          t          t          t          t          t 
#>  1.2447557  1.1435925  0.6731618 -0.1737223 -0.5889784 -0.7339752 -1.2202893 
#>          t          t          t          t          t          t          t 
#> -1.4936935 -1.5821069 -1.7795797 -1.6290700 -1.7760278 -1.4223367 -1.5931553 
#>          t          t          t          t          t          t          t 
#> -2.6832755 -2.7733223 -2.7710590 -3.0889778 -2.3604743 -2.3510220 -1.5456745 
#>          t          t          t          t          t          t          t 
#> -1.4098492 -0.5268468 -0.3187017  0.1878282  0.5208563  0.5656160  0.4952028 
#>          t          t          t          t 
#>  0.2005182  0.3769581  0.5093635  0.9358878

由reprex包(v0.3.0(于2020-04-02创建

最新更新