2

私は2つのベクトルを持っています、xそしてy

xは、各エントリが数年間の1か月を表すベクトルであるため、(たとえば)10年間のデータがありますlength(x) = 120。(私は「posix.ct」コマンドを使用したので、その意味では実際には「月」ですが、どの月とどの年の特定の要素がすでにわかっているので、何かのxような数値ベクトルとして持つことはできませんでしたに対応しますか?つまり、の場合、それは2年目の2月であることがわかります。c(1:n)c(1:n)x = c(1:n)x[13]

yは、各要素が特定の月の特定の変数の観測値であるベクトルです。したがって、観測されたデータは、このようにグループ化されます(1月、0.123)、(2月、2.125)など。私はその月に2つのベクトルを持っています。

x1 = seq(as.POSIXct("YYYY-MM-DD", tz="GMT"),
       as.POSIXct("YYYY-MM-DD", tz="GMT"),
       by="month")
x2 = c(1:length(x1)) 

私がやりたいのはksmoothを実行することです:

plot(x1,y)
smooth = ksmooth(x2,y,"normal")     
lines(smooth)

plot()コマンドでx1を使用する理由は、x軸を時間内に取得する方法がわからないためです。

何も指定していない場合、Rは適切な平滑化パラメーターを自動的に検出する必要があります。その結果、ksmooth $ yは入力ベクトルyに等しくなります!また、プロットには垂直バーが作成されます。上記のコードででx2置き換えると、入力の値と等しい最初と最後を除くすべての値のNAになります。 x1ksmooth$yy

だから私はいくつかの帯域幅を試します h = 0.1::今smooth$y = y、以前のように。垂直バーが生成されます(コマンドで指定したのと同じ色なlines()ので、コマンドと関係がある必要がありksmoothます) h = 10:smooth $ yで奇妙でない結果が得られますが、垂直バーは以前と同じように生成されます。

次に、非常に広い帯域幅というクレイジーなアイデアを試しました。 :これは、上記のコードのように使用しh = 1e+06たときに何も生成しませんでした。しかし、に変更すると、いくつかの良い結果が得られます。(それは巨大です!!)私は非常に素晴らしい結果を得ることができます。(データに適合し、見栄えのする曲線が得られます)しかし、それは合理的ですか?私が見たすべての例で、hは0.1と10の間の何かです。経験則について何か聞いた:hはn ^(-1/5)に等しくなければならない。ここでnはデータポイントの数である。x1x2x2x1h = 1e+09h = 1e+09

4

1 に答える 1

3

あなたが見逃していることの1つは、Rが何も指定していないときに適切な平滑化パラメーターを見つけられないことです。それは、0.5の帯域幅を使用するだけであり、これはあなたの場合はまったく役に立ちません

あなたが見逃しているかもしれない他のことはksmoothbandwidthパラメータの中にあるということですx。の値をksmoothとるとき、それは数である数値に変換します。したがって、帯域幅は数秒で測定され、望ましくない結果になります。月の値を取る場合、デフォルトで0.5か月の帯域幅になりますが、これも望ましくありません。xDateksmoothx

実行したいのは、x使用しているに適切な帯域幅を指定することです。次に例を示します。

x1 = seq(as.POSIXct("2000-01-01", tz="GMT"),
       as.POSIXct("2010-12-31", tz="GMT"),
       by="month")
x2 = c(1:length(x1)) 
set.seed(1)
y = runif(length(x1))

plot(x1,y,type='l')
smooth = ksmooth(x2,y,"normal")     
lines(x1,smooth$y,col='blue',lwd=2)
lines(x1,ksmooth(x2,y,'normal',bandwidth=2)$y,col='red',lwd=2)
lines(x1,ksmooth(x2,y,'normal',bandwidth=10)$y,col='green',lwd=2)
lines(x1,ksmooth(x2,y,'normal',bandwidth=20)$y,col='orange',lwd=2)

平滑化されたランダム時系列

于 2012-10-13T18:22:31.197 に答える