如何在R矩阵中找到移动标准差?

要以与在数据框中相同的方式在矩阵中找到移动标准差,我们只需要使用矩阵对象名称代替数据框名称。因此,我们可以为此使用 zoo 包的 rollapply 功能。

例如,如果我们有一个名为 M 的矩阵,并且我们想要找到 2 个移动标准差,那么我们可以使用以下给定的命令 -

rollapply(M,width=2,FUN=sd,fill=0,align="r")

示例 1

以下代码段创建了一个矩阵 -

M1<-matrix(rnorm(40),ncol=2)

M1

创建以下矩阵 -

        [,1]          [,2]

[1,]   0.345787411  0.43349738

[2,]   0.430162396  0.27067794

[3,]   1.103564081 -1.04460809

[4,]  -0.580082754 -0.25060257

[5,]   1.927945086 -0.89618197

[6,]  -0.280682051 -1.80365388

[7,]  -0.001555098 -0.39360239

[8,]   1.326034225 -1.07766271

[9,]  -1.397108815  0.23207688

[10,]  1.011509167  0.34147468

[11,]  0.334467618  1.26899363

[12,]  0.108641768  0.11525723

[13,] -0.002091529  0.93016179

[14,] -0.714714754  1.31114310

[15,] -1.186013755 -0.63420972

[16,] -0.126330767 -0.07257558

[17,] -0.971670037  1.03083570

[18,] -1.216119558 -0.03943005

[19,]  1.016730169  1.06252932

[20,] -0.706784197  0.09479385

要加载 zoo 包并找到矩阵 M1 的 2-moving 标准差,请将以下代码添加到上述代码段中 -

library(zoo)

rollapply(M1,width=2,FUN=sd,fill=0,align="r")

输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

          [,1]      [,2]

[1,]  0.00000000 0.00000000

[2,]  0.05966212 0.11513073

[3,]  0.47616690 0.93004767

[4,]  1.19051809 0.56144668

[5,]  1.77344349 0.45649357

[6,]  1.56173523 0.64167954

[7,]  0.19737256 0.99705697

[8,]  0.93874741 0.48370369

[9,]  1.92555291 0.92612575

[10,] 1.70315011 0.07735593

[11,] 0.47874067 0.65585494

[12,] 0.15968299 0.81581483

[13,] 0.07830026 0.57622454

[14,] 0.50390071 0.26939447

[15,] 0.33325872 1.37557217

[16,] 0.74930903 0.39713531

[17,] 0.59774513 0.78022959

[18,] 0.17285191 0.75679217

[19,] 1.57886318 0.77920294

[20,] 1.21870870 0.68429231

示例 2

以下代码段创建了一个矩阵 -

M2<-matrix(rpois(60,10),ncol=3)

M2

创建以下矩阵 -

      [,1][,2][,3]

[1,]  11   9   6

[2,]   3  10   8

[3,]  12  10   5

[4,]   8  10   4

[5,]  14   7  10

[6,]   3  10  10

[7,]  10  10   9

[8,]   7   9   8

[9,]  11  11  14

[10,]  6   9   9

[11,] 14  13  14

[12,]  9  11   9

[13,] 12  11   6

[14,] 10  14   7

[15,]  8  14  13

[16,] 21  10   8

[17,] 15   7  10

[18,]  9  15   9

[19,] 10   8   8

[20,] 17  10   7

要找到矩阵 M2 的 4 移动标准差,请将以下代码添加到上述代码段中 -

rollapply(M2,width=4,FUN=sd,fill=0,align="r")
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

       [,1]      [,2]       [,3]

[1,]  0.000000 0.0000000 0.0000000

[2,]  0.000000 0.0000000 0.0000000

[3,]  0.000000 0.0000000 0.0000000

[4,]  4.041452 0.5000000 1.7078251

[5,]  4.856267 1.5000000 2.7537853

[6,]  4.856267 1.5000000 3.2015621

[7,]  4.573474 1.5000000 2.8722813

[8,]  4.654747 1.4142136 0.9574271

[9,]  3.593976 0.8164966 2.6299556

[10,] 2.380476 0.9574271 2.7080128

[11,] 3.696846 1.9148542 3.2015621

[12,] 3.366502 1.6329932 2.8867513

[13,] 3.500000 1.6329932 3.3166248

[14,] 2.217356 1.5000000 3.5590261

[15,] 1.707825 1.7320508 3.0956959

[16,] 5.737305 2.0615528 3.1091264

[17,] 5.802298 3.4034296 2.6457513

[18,] 6.020797 3.6968455 2.1602469

[19,] 5.500000 3.5590261 0.9574271

[20,] 3.862210 3.5590261 1.2909944

以上是 如何在R矩阵中找到移动标准差? 的全部内容, 来源链接: utcz.com/z/343710.html

回到顶部