4

Learning R language - 移動平均のやり方は知っていますが、もっとやる必要があります - しかし、私は統計学者ではありません - 残念ながら、すべてのドキュメントは統計学者向けに書かれているようです。

私はこれを Excel でよく行います。これは、運用活動の分析に非常に便利です。

ボリンジャー バンドを作成するための各行のフィールドは次のとおりです。

値は、コール数、苦情率など、何でもかまいません

タイムスタンプ | 値 | 移動平均 | STDEVP の移動 | 下のコントロール | アッパーコントロール

簡単に言えば、移動平均と stdevP は、シリーズの前の 8 つほどの値を指します。特定の時点での下位コントロール = 移動平均 - 2*移動標準偏差 P および上位コントロール = 移動平均 + 2*標準偏差 P の移動

これは単一のファイルに対してExcelで簡単に実行できますが、Rを機能させる方法を見つけることができれば、Rの方が私のニーズに適しています。自動化された場合も、より高速で信頼性が高くなることを願っています。

リンクやヒントをいただければ幸いです。

4

2 に答える 2

3

動物園シリーズで作業する場合rollapply()、パッケージの関数を使用できます。zoo

TimeSeries <- cumsum(rnorm(1000))
ZooSeries <- as.zoo(TimeSeries)

BollLines <- rollapply(ZooSeries,9,function(x){
    M <- mean(x)
    SD <- sd(x)
    c(M,M+SD*2,M-SD*2)
})

ここで、中央のフレームを使用することを覚えておく必要がrollapplyあります。つまり、現在の日付の左右の値を取ります。これは、x 個の事前値を取るという提案よりも便利で、ボリンジャー バンドの定義に忠実です。

Zoo に変換したくない場合は、ベクターも使用して独自の関数を作成できます。計算も簡単にプロットできる S3 ベースのプロット関数を追加しました。これらの関数を使用すると、次のようなことができます。

TimeSeries <- cumsum(rnorm(1000))
X <- BollingerBands(TimeSeries,80)
plot(X,TimeSeries,type="l",main="An Example")

取得するため :

ここに画像の説明を入力

機能コード:

BollingerBands <- function(x,width){
  Start <- width +1
  Stop <- length(x)
  Trail <- rep(NA,ceiling(width/2))
  Tail <- rep(NA,floor(width/2))

  Lines <- sapply(Start:Stop,function(i){
    M <- mean(x[(i-width):i])
    SD <- sd(x[(i-width):i])
    c(M,M+2*SD,M-2*SD)
  })


  Lines <- apply(Lines,1,function(i)c(Trail,i,Tail))
  Out <- data.frame(Lines)
  names(Out) <- c("Mean","Upper","Lower")

  class(Out) <- c("BollingerBands",class(Out))

  Out
}

plot.BollingerBands <- function(x,data,lcol=c("red","blue","blue"),...){
    plot(data,...)

    for(i in 1:3){
      lines(x[,i],col=lcol[i])
    }
}
于 2011-03-30T14:29:53.983 に答える
1

Rグラフギャラリー(65)には、バンドの計算と株価のプロットの両方のコードを示す図があります。

2005年のコードは、6年後も機能しているようで、IBMの現在の株価を示し、数か月前にさかのぼります。

IBMボリンジャーバンド

最も明らかなバグは、帯域幅とボリュームの低いチャートの幅が狭くなっていることです。カバーされる日数にわたって別のものがあるかもしれません。

于 2011-04-03T23:51:09.663 に答える