ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Rで経済時系列コミュのKSVMにチャレンジ

  • mixiチェック
  • このエントリーをはてなブックマークに追加
カーネル法を、SVM(サポートベクタマシン)を使って利用するライブラリを,使えるようになるスレッド。

マニュアルを読んでみると、すごい分量なので結構真面目にやらないとダメかと思いスレッド化します。

KSVMを使って時系列予測が出来る事を目指します。

お付き合い、よろしくお願いします。

コメント(67)

RVMは、軽いらしいが、ソフトないと組み込みに行けないのでソフトを探す。

けど以下で探して、ソフトが一本も見当たらない。

http://www.kernel-machines.org/software

GPとRVMは、説明を読んだ限り、同じ気がするが、どうなんだろうか?

温泉先生

>mingw.winxp.zip

  コンパイルしていただき、有難うございました。
  動作不可、何故か全く見当つきません。

  これ以上固執しても時間の無駄となるため、
  この話題はここまでにします。有難うございました。

>17番

  お礼の投稿をする間もないいまま投稿してしまい失礼しました。
  
>SVMは、どういう学習をするのか、最急降下法に繋がるところまでの
>手順が書いてあったので、理解できるようになりました。

  まさしく先生の記述通りに雲が晴れた気分になりました。

  この投稿を読み、『RVM』もすんなり理解することができ、
  すこし先に進むことができました。有難うございました。
>GPとRVMは、説明を読んだ限り、同じ気がするが、どうなんだろうか?

   GP = Gaussian Processes
   SGP = Sparse Gaussian Processes

 RVMの特徴の一部(下記)と
 Support Vectorsとは分類を敢えてわけているので
 GP=RVMと表現されている気がしますが。。。間違っていればご容赦ください。

  ?RVMは, Tippingにより2001年に提案されています。
   Sparse Bayesian learning and the relevance vector machine.
   Journal of Machine Learning Research 1, 211?244, 2001

  ?入力が与えられたときのターゲット変数にGaussianを仮定する。

  ?ARD (Automatic Relevance Determination)と呼ばれるPrior(事前分布)を
   使用することで、学習結果をスパース(Sparse)にすることができる
   http://www.cs.toronto.edu/~radford/fbm.software.html

   This software supports Bayesian regression and classification models
  based on neural networks and Gaussian processes,
  and Bayesian density estimation and clustering using mixture models
  and Dirichlet diffusion trees.
   It also supports a variety of Markov chain sampling methods,
  which may be applied to distributions specified by simple formulas,
  including simple Bayesian models defined by formulas
  for the prior and likelihood.
温泉先生

>30番の修正投稿です。すいません。

>GPとRVMは、説明を読んだ限り、同じ気がするが、どうなんだろうか?
 library(kernlab)付属の解説PDFでは
 『GP≠RVM』として、別扱いで説明されています。
  # 3.2. Relevance vector machine----rvm関数
  # 3.3. Gaussian processes----------gausspr関数
以下、R の help で違いを確認してください。


#---------------
library(kernlab)
help(rvm)
help(gausspr)

data(iris)
test <- gausspr(Species~.,data=iris,var=2)
test
alpha(test)

# predict on the training set
predict(test,iris[,-5])

# class probabilities
predict(test, iris[,-5], type="probabilities")

# create regression data
x <- seq(-20,20,0.1)
y <- sin(x)/x + rnorm(401,sd=0.03)

# regression with gaussian processes
foo <- gausspr(x, y)
foo
温泉先生

# 6番の修正投稿です。
# 『カーネル主成分分析による予測』も、ほぼ解決したように見えますが??

#------------------

library(kernlab)
data <- Nile[1:99]
#データ
row <- 10
d.len <- length(data)
colmn <- d.len - row + 1
size <- row*colmn
X <- matrix(0,row,colmn)
d.point <- 1
for(L in 1:size){
X[L] <- data[d.point]
if(L%%row == 0){
d.point <- d.point - row + 2
} else {
d.point <- d.point + 1
}
}
# fix(X)
C <- X%*%t(X)/colmn
K<-kpca(C, kernel = "laplacedot" , features=6,
epsilon=0.000001, kpar= list(sigma =0.0000001))
V<-pcv(K)

L <- matrix(0,row,1);L[row,1] <- 1
Q <- matrix(0,row,1);Q[1:(row-1), 1] <- X[2:row, colmn]
Xpre <- (( t(L)%*%V%*%t(V)%*%Q )/( 1- t(L)%*%V%*%t(V)%*%L))[1,1]

Xpre
#[1] 748.1311

Nile[100]
# [1] 740
33番ですが、これって色んな意味で、無茶凄い事ではないですか?

1)カーネル付きSSA

SSAそのものが、珍しい上に、カーネル付きなSSAって文献ヒットしないこと

2)ボラティリティ断層の対応力

そもそもNileは、目で見てもわかるようなボラティリティ断層を持っていること
たぶんこの程度の断層で埋め込み的な限界に達するんだろうなと思っていて
案の定?カーネル無しは、あさってな値を出力していましたが、これがかなり
是正されている事

と言うことで、実用アルゴリズムとしても、研究アルゴリズムとしても、一段と
棟が上がったように見えているのですが。
なんでSSAを正統派だと思うのか?って所を少し説明します。

1)力学系であること

○○時系列解析って、色々ありますが、どれもこれも、力学系ではなく
現象論系で、そういう意味では古典テクニカルと大差が無い話。

SSAは、ターケンスの埋め込み定理を使ってアトラクターを再構成しているので、
そう言う意味で力学系な方法。

本当はわかりやすかった絵が、何度も折り曲げられた、お陰で意味不明になっているので、
再構成で、あぶり出すと言うもの。
勿論、元々に何かの絵が書いてある場合だけ、あぶり出せるんですけどね。

2)固有ベクタをそのまま使っているところ

固有値解析ってのが、実は最も正当な要約の方法だと言うこと。

理系で学問や現場で、やたらと固有値を計算させたがる理由は、結局は、これが多くの場合で
最も優れた要約(サマリー)の方法だから。

固有ベクタって、つまりアトラクターが出してきた方向成分そのものなわけで、最近の動向と
固有ベクタが示す方向を重ね合わせた方向に将来が向くと考えるのがSSAなわけです。

3)妥協がないところ

アトラクターを再構成させ、固有ベクタで、向きを決める為、原理部分に調整項が無いわけです。
勿論、カオス次元や、カーネル調整はありますが、ここから先は尤度だけの問題。


対象とする時系列に、埋め込み定理で引っかかるような、絵が書かれていれば、予測が当たる
わけで、こんなのは駄目だ!って事になったら、今の技術では力学系は全滅だ!って言ってるのと
大差ない話なんじゃないでしょうか?

>力学系は全滅だ!

もうひとつとしては、ランジュバン系が残っているのか。

あれ読んだけど、フォッカープランクは出るは散逸方程式は出るはで、やたら難しいんですけど。。(ぼそ
温泉先生

>もうひとつとしては、ランジュバン系が残っているのか。

 (経済物理学研究会報告) Nelson 確率過程量子化法の価格変動理論への応用
  http://www18.tok2.com/home/kabutaro/files/StockEquationHoukoku.pdf

    >Nelsonの確率過程量子化を施すことで
    >虚時間の1次元Navier-Stokes方程式が得られ、
    >さらに変形してSchrodinger方程式が得られることから、
    >ガウシアンからずれる価格変動の原因を
    >市場におけるポテンシャル構造の存在にあると見ているわけです。

  『Sech型KFによる予測』は強力すぎるために投稿を控えておりましたが、
  どうしようか悩ましいところです。。。。

>GPとRVMは、説明を読んだ限り、同じ気がするが、どうなんだろうか?

 [チュートリアル講演] カーネルマシン
   http://www.neurosci.aist.go.jp/~akaho/papers/kernel-akaho.pdf

  >(6頁) 6. 3 ガウシアンプロセスより抜粋

  >GP は,ベイズ推定としても基本的なものである.
  >この考え方を拡張したものが『Relevance vector machine』と呼ば
  >れるモデルである.

 ということで、自分なりに納得できました。(笑)

37番の補足

 以下の解説PDFを追加しておきます。

  株価の運動方程式
  http://www18.tok2.com/home/kabutaro/files/StockEquation.pdf
http://www18.tok2.com/home/kabutaro/econophysics/sechinspiremodel.htm

関連する記事で、こんなのを見つけたんですが。

>しかし、価格変動の隣接2時刻の相関を見ると実際の市場で観測されるような無相関でなく顕わな相関が現れてしまいます。これは実際の市場のモデルとしては不適なので隣接2時刻相関が無相関になるような現実的なモデルを探す必要はあるでしょう。

って事だけど、この結論は寧ろ逆で、デイトレードに限って言わせて貰うと、必ず2日前の日中を見てトレードするのが、実は常識で、どうしてよ?って見ればわかるほど、似た展開が多く現れる為。

ソリトンだから、似た展開が出るとも思えないんだけど、ザラ場やってる連中は、当然意識してる話と思う。

もう5年以上、うまい説明が付かない現象のひとつです。
つか話をカーネルに戻すとして、例えばカーネル付きのYule-Walkerとか、どうして、そこらに転がっていないんだろうか?

まず、こんなの原理的に出来ないのか?って、そんな筈は無いし。

またYule-WalkerはSVMみたいに、スパースじゃないから計算効率悪いんでは?、、ってのも現実的には、どうでもいい話じゃないかと?

カーネルのパラメータだけは、自分で調整してね!ってのでもあれば、仮に性能向上が全く無くても、なんだか面白そうな気がするんだけどね。

どうしてなんだろうか??
犬も歩けば棒にあたるなのか、tframeってパッケージを見つけました。

Details

The tframe package provides a kernel of functions for programming time series methods in a way that makes them relatively independently of the representation of time.

だそうです。

まぁ、これがまた巨大パッケージのようで、説明だけでも、うんざりするほどあるんですが。。

温泉先生

>『 tframe 』ってパッケージを見つけました。
> 色んな意味で、無茶凄い事ではないですか?

 取り急ぎ、関連パッケージと思われる下記を
 インストールし待機中です。

  tframe;時系列解析プログラムに『カーネル機能を付加』する
  dse ; 多変量時系列解析ライブラリ
  dse1; 基本システムで、多変量 ARMA と状態空間モデルを含む。
  dse2; 推定方法の吟味、予測、予測方法の吟味のための拡張を含む。
  tsfa; 多変量時系列因子の抽出
  TSdbi;時系列データベースインターフェース  

> 説明だけでも、うんざりするほどあるんですが。。

  ゆっくり,急がず・・・基礎説明からお願いします。

  温泉塾もカーネル付プログラミングの
  新境地に踏み出すような喜びを予感させますね。。。。。
まずは、やり残しから。

とりあえず普通?のSSAです。

結果は、こんな感じ。

> pnorm(mean(ar_prof)/sd(ar_prof))
[1] 0.5371941
>

----------------------------------------------------------------

ssa <- function(data,row=10)
{
d.len <- length(data)
colmn <- d.len - row + 1
size <- row*colmn
X <- matrix(0,row,colmn)
d.point <- 1
for(L in 1:size){
X[L] <- data[d.point]
if(L%%row == 0){
d.point <- d.point - row + 2
} else {
d.point <- d.point + 1
}
}
C <- X%*%t(X)/colmn
eigV <- eigen(C)$vectors
V <- eigV[,1:(row - 1)]
L <- matrix(0,row,1);L[row,1] <- 1
Q <- matrix(0,row,1);Q[1:(row-1), 1] <- X[2:row, colmn]
Xpre <- (( t(L)%*%V%*%t(V)%*%Q )/( 1- t(L)%*%V%*%t(V)%*%L))[1,1]
return(Xpre)
}

dat <- diff(log(read.csv("ntt.csv")[,2]))
start <- 1475
stop <- length(dat) - 1
ar_prof <- rep(0,(stop-start))
M <- 0
for(L in start:stop){
M <- M+1
ar_prof[M] <- sign(ssa(dat[(L-100):L],21))*dat[L+1]
}
pnorm(mean(ar_prof)/sd(ar_prof))

もし株価がカオスだとしたら、埋め込み次元は、row=5か20あたりの筈かと?

どうしてよ?って、週か月でカオスになるとしたらなるはずかなと?

rowを5にすると

> pnorm(mean(ar_prof)/sd(ar_prof))
[1] 0.5767812
>

と結構な当たり具合。

いつもいつも、こうなら言うこと無いんですけどね?
実際のところ、どういう埋め込み次元がベストなんだろ?と興味がわいたので
埋め込み次元を2〜10まで動かしてみる。

だいたい、予想が当たった感じ。

なかなか面白いね?

----------------------
2
> pnorm(mean(ar_prof)/sd(ar_prof))
[1] 0.5508872
>
3
> pnorm(mean(ar_prof)/sd(ar_prof))
[1] 0.5552438
>
4
> pnorm(mean(ar_prof)/sd(ar_prof))
[1] 0.5824134
>
5
> pnorm(mean(ar_prof)/sd(ar_prof))
[1] 0.5767812
>
6
> pnorm(mean(ar_prof)/sd(ar_prof))
[1] 0.5672077
>
7
> pnorm(mean(ar_prof)/sd(ar_prof))
[1] 0.5512002
8
> pnorm(mean(ar_prof)/sd(ar_prof))
[1] 0.5084912
>
9
> pnorm(mean(ar_prof)/sd(ar_prof))
[1] 0.5440561
>
10
> pnorm(mean(ar_prof)/sd(ar_prof))
[1] 0.5393715
>
これが、カーネル付きのSSA。

パラメータの調整が、難しいのか、今のところ成績が出てない。
どうしたもんか。。

-----------------------------------------------------------------------------------------
library(kernlab)

kssa <- function(data,row=10,ep=0.0001,si=0.0001)
{
d.len <- length(data)
colmn <- d.len - row + 1
size <- row*colmn
X <- matrix(0,row,colmn)
d.point <- 1
for(L in 1:size){
X[L] <- data[d.point]
if(L%%row == 0){
d.point <- d.point - row + 2
} else {
d.point <- d.point + 1
}
}
# fix(X)
C <- X%*%t(X)/colmn
K<-kpca(C, kernel = "laplacedot" , features=6,epsilon=ep, kpar= list(sigma = si))
V<-pcv(K)
L <- matrix(0,row,1);L[row,1] <- 1
Q <- matrix(0,row,1);Q[1:(row-1), 1] <- X[2:row, colmn]
Xpre <- (( t(L)%*%V%*%t(V)%*%Q )/( 1- t(L)%*%V%*%t(V)%*%L))[1,1]
return(Xpre)
}
epsilon=0.1 sigma=0.1とするが、それでも

Error in if (res$values[features] < th) warning(paste("eigenvalues of the kernel matrix are below threshold!"))

と、怒られる。うーん。。
>48番

data <- Nile[1:99]
kssa(data,row=10,ep=0.000001,si=0.0000001)
#[1] 748.1311
ar_prof[M] <- sign(kssa(dat[(L-100):L],4),1E-12,1E-12)*dat[L+1]

と、現在-12乗にしていますが、それでもスレッショルド以下に潜るっぽいです。

明日が早いんで今日は寝ます。

NTTだけで判断するのは危険だけど、株価がカオスだとしたら、所詮は人口データなので、カオスにする輩が、どこかに居て始めて、カオスになる話。

指数の大型株なので、当然強力なマーケットメーカーが居て当たり前なんですが、そういう連中の行動が、これであぶり出せてるのだとしたら、面白いね。

埋め込み次元が、4〜5日あたりがベストなんてのも、いかにも意味深だし。。

では、おやすみなさい。

下記、#■の箇所を修正し計算しました。

#-------------
library(kernlab)
kssa <- function(data,row=10,fe=6,ep=0.001,si=0.001)
{
d.len <- length(data)
colmn <- d.len - row + 1
size <- row*colmn
X <- matrix(0,row,colmn)
d.point <- 1
for(L in 1:size){
X[L] <- data[d.point]
if(L%%row == 0){
d.point <- d.point - row + 2
} else {
d.point <- d.point + 1
}
}
# fix(X)
C <- X%*%t(X)/colmn
# K<-kpca(C, kernel = "laplacedot" , features=fe ,epsilon=ep, kpar= list(sigma = si))
K<-kpca(C, kernel = "anovadot" , features=fe ,degree=ep, kpar= list(sigma = si))#■
V<-pcv(K)
L <- matrix(0,row,1);L[row,1] <- 1
Q <- matrix(0,row,1);Q[1:(row-1), 1] <- X[2:row, colmn]
Xpre <- (( t(L)%*%V%*%t(V)%*%Q )/( 1- t(L)%*%V%*%t(V)%*%L))[1,1]
return(Xpre)
}
#-----------

# dat <- diff(log(read.csv("ntt.csv")[,2]))
dat <-diff(read.csv("ntt.csv")[,2])#■

start <- 1475
stop <- length(dat) - 1
ar_prof <- rep(0,(stop-start))
M <- 0
for(L in start:stop){
M <- M+1
DD<-kssa(dat[(L-100):L],row=6,fe=5,ep=2,si=2)#■
ar_prof[M] <- sign(DD)*dat[L+1]#■
}
pnorm(mean(ar_prof)/sd(ar_prof))
# [1] 0.5537395
46番にならい、53番コードで計算しました。
埋込み次元は、やはり4が最大の勝率値となりました。

pnorm(mean(ar_prof)/sd(ar_prof))
次元 -主成分 -  勝率
# 3 - 2  [1] 0.5560401
# 4 - 3  [1] 0.5724265
# 5 - 4  [1] 0.5354419
# 6 - 5  [1] 0.5537395
こんなヨタ話を捏造しました。

マーケットには、カオスを埋め込もうとする連中がいるようです。
良く見れば数グループいるようで、3日、4日、5日で埋め込んで来ています。

と言うことなら、3〜5日のSSAを計算し、多数決で上下を予測させるってのが以下のコード。

成績は、こんな感じで、辛うじてですが、今まででは一番いいようです。

> pnorm(mean(ar_prof)/sd(ar_prof))
[1] 0.5867268
>

では、出掛けてきます。

-----------------------------------------------------------------------------


dat <- diff(log(read.csv("ntt.csv")[,2]))
start <- 1475
stop <- length(dat) - 1
ar_prof <- rep(0,(stop-start))
M <- 0
for(L in start:stop){
M <- M+1
ar_prof[M] <- sign(sign(ssa(dat[(L-100):L],3))+sign(ssa(dat[(L-100):L],4))+sign(ssa(dat[(L-100):L],5)))*dat[L+1]
}
pnorm(mean(ar_prof)/sd(ar_prof))
手法は全く見えていないのですが、日経先物でやった方が与太話が現実的になるかも?
つかn日のSSAが計算出来て、それなりに方向を当ててるってのなら、やることはひとつかも。。

と言うか、最終的にはシグナルしか要らないので、上がる下がるのデジタル値しか必要ない、とは言っても、色々ある中でどれを選択するのか?って判断には、アナログ的な数値が必要。

今晩でも始めて見ますね。
>日経先物でやった方が与太話が

さっき、日経先物データを突っ込んでみました。

NTTの場合、埋め込み次元を上げて行っても、期待値が減る事はあってもマイナスには、なりませんが、
日経先物はマイナスの期待値が出る部分があり、多数決だと足を引っ張られてボコボコになりました。

まぁそういう場合でも、無理やりカルマンに突っ込む事で、力ずくで解決しようかと。。

以上結果報告まで。
案外と、多数決って、あなどり難いって、感じ。

また直前までの成績で、多数決に参加させる奴を、決めるってのも、思ってたほどは無意味でも無いようです。

数字で予測値が出るが、当たりが悪いのよりは、上げ下げしか出ないが、当たりのいいのって、やっぱ当たりが優先??

まぁ、本来これは、予測を何に使いたいかにも、よるんだろうね。

ああ、あともうひとつ。サポートベクタの数って、案外微妙。

パーセプトロンに掛けるデータって、出来るだけレンジが綺麗に入るようにするわけだけど、同じ事をKSVMでやるのは、サポートベクタが増えるばっかりで、モデルとしての実用度が上がるとも言い切れない感じ。

自分の場合は、機械学習は、ほとんどが組み込みで使うわけで、こういう重さ?って、かなり神経を使うわけだけど、データの前処理のやり方だけでも、全く違ったものが出来てくる。

どっちにしてもKSVMは、よほど遅くてもいい問題以外は、H8級には、ほとんど実装出来ないと思ったほうがいい感じ。

RVMも試してみるが、自分の問題だとRVは、KSVと比べて、あまり小さい数にはならない感じ。

パーセプトロンだと、やや精度がきついんで、色々と画策してるんですが、なかなか決定打が無い感じ。。
と、こんなものも、作って見ました。
気になる成績ですが、とりあえずこんな感じ。

> pnorm(mean(ar_prof)/sd(ar_prof))
[1] 0.5684388

------------------------------------------------------------------------
library(kernlab)

ssaksvm <- function(yobs)
{
#yobs <-sin(1:100)
N <- length(yobs)
ssa2 <- 1:(N-7)
ssa3 <- 1:(N-7)
ssa4 <- 1:(N-7)
ssa5 <- 1:(N-7)
ssa6 <- 1:(N-7)
obs <- 1:(N-7)
for(t in 7:N){
No <- t-6
ssa2[No] <- ssa(yobs[1:t],2)
ssa3[No] <- ssa(yobs[1:t],3)
ssa4[No] <- ssa(yobs[1:t],4)
ssa5[No] <- ssa(yobs[1:t],5)
ssa6[No] <- ssa(yobs[1:t],6)
obs[No] <- yobs[t+1]
}
dat <-cbind(obs,ssa2,ssa3,ssa4,ssa5,ssa6)
model <- ksvm(obs~.,data=dat[1:(No-1),])
pred <- predict(model,dat[No,])[No]
return(pred)
}
上の奴だけど、こういう時の精度は悪い。

計算あってるのかな??

> sin(101)
[1] 0.4520258
> ssaksvm(sin(1:100))
Using automatic sigma estimation (sigest) for RBF or laplace kernel
[1] 0.3802291
>
つか、こっち。なんだか値がおかしい気がする。

問題あるのかな??

RVM→次元4_SSA予測
理論的根拠なしで試しにコードを書いてみました。

#---------------------
library(kernlab)
nkf<-read.csv("nkf002.csv");
nkflog<-log(nkf[,2]);

N<-length(nkflog)
x1<-1:N
y1<-nkflog;

time250<-(N-250):N
rvmm <- rvm(x1[time250], y1[time250], kernel = "laplacedot", kpar = list(sigma = 0.012))
nk.rvmm<-predict(rvmm,x1);#RVM→SSAデータ

start<-(N-49);
ssa_pred<-matrix(0,1,51)
M <- 0
for(t in (N-50):N){
M <- M + 1
ssa_pred[M]<-round(exp(ssa(nk.rvmm[(start-450):t],4)))
}
time50<-(N-50):N
plot(time50,nkf[((N-50):N),2],type="o",
ylim=(c(9000,11000)),ylab="",main="RVM→次元4_SSA予測");
par(new=T)
plot(time50,ssa_pred,type="o",ylim=(c(9000,11000)),ylab="",col="red");#予測
legend(locator(1),c("実測値","予測値"), lty=c(1,2),col=c(1,2))
小山6型のカーネルなしのSVM

------------------------------------------------------------------------------

l.type6 <- function(data,row=5)
{
d.len <- length(data)
colmn <- d.len - row + 1
size <- row*colmn
X <- matrix(0,row,colmn)
d.point <- 1
for(L in 1:size){
X[L] <- data[d.point]
if(L%%row == 0){
d.point <- d.point - row + 2
} else {
d.point <- d.point + 1
}
}
tX <- t(X)
colnames(tX) <- paste("col_",1:row,sep="")
return(tX)
}

library(compiler)
type6 <- cmpfun(l.type6)

library(e1071)
type6svm <- function(yobs,row=3)
{
#yobs<-diff(Nile)
#row <-3
tp6 <- type6(yobs,row)
model <- svm(tp6[,1:(row-1)],tp6[,row])
p1 <-tp6[length(tp6[,1]),]
for(L in 2:row){
p1[L-1] <- p1[L]
}
ret <- tail(predict(model,rbind(tp6,p1)[,-row]),1)
return(ret)
}

data <- Nile
type6svm(data,5)
なんで今更、カーネルも無いSVMなのよ?って。

状態空間を使っていますが、結局は多数決に重みがついたような話。

だったら、多数決に参加する連中に望まれる事は、良く当たる/良く曲がる、さえしてくれれば
後は何でも良い。

埋め込み次元が同じでも、学習法方法が違えば、予測値も、方向も場合によって異なる。

つまり多数決に参加させても良い。

SSAに比べると、こういうのは、駄目だね。

> data <- sin(1:100)
> type6svm(data,3)
0.3853493
> sin(101)
[1] 0.4520258
> ssa(data,3)
[1] 0.4520258
>

逆に、こういう時は、吹き飛ばされなくなっているが。。

> data <- tan(1:100)
> type6svm(data,3)
2.913736
> tan(101)
[1] 0.5067526
> ssa(data,3)
[1] 157.35

ログインすると、残り28件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

Rで経済時系列 更新情報

Rで経済時系列のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング