如何在R数据框中找到移动标准偏差?

为了找到 R 数据帧中的移动标准差,我们可以使用 zoo 包的 rollapply 函数。

例如,如果我们有一个名为 df 的数据框,并且我们想要找到 2 个移动标准差,那么我们可以使用下面给出的命令 -

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

示例 1

以下代码段创建了一个示例数据框 -

x1<-rnorm(20)

x2<-rnorm(20)

x3<-rnorm(20)

df1<-data.frame(x1,x2,x3)

df1

创建以下数据框 -

        x1           x2         x3

1  -0.049371233   0.15042948   0.7801880

2  -2.309740485   0.16439819  -0.5155871

3   0.275820922  -0.34764174   1.4993257

4  -0.920297787   0.25222530   1.5681985

5   0.110624467   0.01890216   1.2107487

6   0.865938984  -1.67177878   1.1043152

7   0.253139069   1.32182287   0.5327715

8   1.414675759  -2.65619112  -1.0617283

9   0.416841760  -0.39158788  -0.3602582

10 -0.358835803   0.20922777   1.2902007

11 -0.455361301  -1.40088912   2.0602088

12  0.742073720  -0.42320099  -0.8943533

13 -0.002643386   0.75774583   0.7258981

14 -1.967374060  -1.92858217   0.8854961

15 -1.741133384  -1.58046760  -1.5376346

16 -1.828572667  -0.54706762  -0.2381593

17  0.674338272  -0.17540436  -0.7148876

18 -0.437785459   0.36396586  -1.2007988

19 -0.235525784  -0.39931221  -0.9674260

20  0.141622142   0.03842005   0.4136045

要加载 zoo 包并找到 df1 中数据的 5-moving 标准差,请将以下代码添加到上述代码段中 -

library(zoo)

rollapply(df1,width=5,FUN=sd,fill=0,align="r")

输出结果

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

          x1         x2      x3

[1,]  0.0000000  0.0000000  0.0000000

[2,]  0.0000000  0.0000000  0.0000000

[3,]  0.0000000  0.0000000  0.0000000

[4,]  0.0000000  0.0000000  0.0000000

[5,]  1.0722352  0.2361815  0.8544178

[6,]  1.2487785  0.7913527  0.8545377

[7,]  0.6482081  1.0828798  0.4117639

[8,]  0.8774868  1.5941549  1.0374862

[9,]  0.5308056  1.5384901  0.9772044

[10,] 0.6660168  1.5621470  0.9964741

[11,] 0.7504078  1.5214858  1.2488476

[12,] 0.7814668  1.1231666  1.3921332

[13,] 0.5092032  0.8063859  1.2013811

[14,] 0.9903649  1.1098367  1.0852588

[15,] 1.1526908  1.0892921  1.4502026

[16,] 1.2442845  1.0606422  1.0377557

[17,] 1.2212830  1.0849092  1.0110028

[18,] 1.1481566  0.9602383  0.9464956

[19,] 1.0641887  0.7117466  0.4921518

[20,] 0.9350305  0.3605345  0.6423378

示例 2

以下代码段创建了一个示例数据框 -

y1<-rpois(20,1)

y2<-rpois(20,5)

y3<-rpois(20,2)

y4<-rpois(20,5)

df2<-data.frame(y1,y2,y3,y4)

df2

创建以下数据框 -

   y1 y2 y3 y4

1  2  4  1  7

2  0  6  0  5

3  1  7  4  7

4  0  6  4  5

5  1  3  2  6

6  0  2  1  9

7  1  7  2  5

8  2  4  4  1

9  0  5  4  2

10 1  6  2  6

11 0  7  0  4

12 1  2  1  7

13 0  6  2  8

14 1  6  4  1

15 1  3  1  6

16 6  6  5  2

17 1  8  5  3

18 2  5  1  7

19 1  5  1  6

20 0  6  1  4

要在 df2 中找到数据的 4-moving 标准偏差,请将以下代码添加到上面的代码段中 -

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

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

         y1         y2         y3       y4

[1,]  0.0000000  0.000000  0.0000000  0.0000000

[2,]  0.0000000  0.000000  0.0000000  0.0000000

[3,]  0.0000000  0.000000  0.0000000  0.0000000

[4,]  0.9574271  1.258306  2.0615528  1.1547005

[5,]  0.5773503  1.732051  1.9148542  0.9574271

[6,]  0.5773503  2.380476  1.5000000  1.7078251

[7,]  0.5773503  2.380476  1.2583057  1.8929694

[8,]  0.8164966  2.160247  1.2583057  3.3040379

[9,]  0.9574271  2.081666  1.5000000  3.5939764

[10,] 0.8164966  1.290994  1.1547005  2.3804761

[11,] 0.9574271  1.290994  1.9148542  2.2173558

[12,] 0.5773503  2.160247  1.7078251  2.2173558

[13,] 0.5773503  2.217356  0.9574271  1.7078251

[14,] 0.5773503  2.217356  1.7078251  3.1622777

[15,] 0.5000000  2.061553  1.4142136  3.1091264

[16,] 2.7080128  1.500000  1.8257419  3.3040379

[17,] 2.5000000  2.061553  1.8929694  2.1602469

[18,] 2.3804761  2.081666  2.3094011  2.3804761

[19,] 2.3804761  1.414214  2.3094011  2.3804761

[20,] 0.8164966  1.414214  2.0000000  1.8257419

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

回到顶部