作者blackalert (右上角星位)
看板Statistics
標題Re: [程式] R package output處理問題 [tseries]
時間Wed Jan 30 09:26:20 2013
※ 引述《TrebleA (我也想要有年終)》之銘言:
: [軟體程式類別]:
: R
: [程式問題]:
: TimeSeries, captre.output, 整理
: [軟體熟悉度]:
: 低(不到1個月)
: [問題敘述]:
: [程式範例]:
: -----------------------------------------------------------------------------
: 掙扎了很久還是想要麻煩大家一下,因為想到天亮了還是想
: 不出有沒有燒時間以外的方法....
: 以下說明我的問題:
: INDEX 是一個384*34的矩陣
: 我希望對每一行做DF單根檢定(所以要做34次)
: 其中需要的package如下
: library(tseries)
: 在苦苦追求解答的路上,終於讓我知道迴圈怎麼寫了(好笨><)
: adf.test(INDEX[,i],k=0) #DF TEST
: ##DF TEST
: for(i in 1:34){
: cat("i=",i)
: print(adf.test(INDEX[,i],k=0))
: }
: 很開心的把結果跑出來後遇到了一個難題
: 以第一行為例的話 用這個套件跑出來的結果是
: > adf.test(INDEX[,1]) #ADF TEST
: Augmented Dickey-Fuller Test
: data: INDEX[, 1]
: Dickey-Fuller = -2.0861, Lag order = 7, p-value = 0.5408
: alternative hypothesis: stationary
: 也就是如果把迴圈執行完是用上面的結果堆疊34次
: 但是我希望把他整理成以下的表
: i=1 DF statistic p-value lag order
: i=2 DF statistic p-value lag order
: .
: .
: .
: i=34 DF statistic p-value lag order
: 想說用capture.output來做雖然可以抓取所有的結果,但是資
: 料內容也由便於分析的數值變成character了,這樣在之後的分析上似乎會很不便?
: (因為之後想要找出比較不顯著的值)
: 爬了一下文發現大家都是自己寫的函數形式來做處理,
: 還沒有看到如果針對別人寫的package的結果做處理的。
: 不知道針對package的問題有沒有人有類似的問題跟想法呢?
: 謝謝大家耐心看完這篇
先定義一個34*4矩陣來放你要的結果,例如 M = matrix(,34,4)
然後在你的迴圈裡面,假設令 r = adf.test(INDEX[,i],k=0)
s = r$statistic 可以抓出D-F統計量
l = r$parameter 可以抓出 lag order
p = r$p.value 可以抓出 p-value
## 可以試試 names(r) ##
最後把它們放到預先定義的M矩陣中的相對位置 M[i,] = c(i,s,l,p) 就好了~
我其實不太懂時間數列,
如果有什麼錯誤還請指教~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.128.68.208
※ 編輯: blackalert 來自: 140.128.68.208 (01/30 09:40)
1F:推 TrebleA:感謝,我先來嘗試一下,如有最新結果再跟大家報告 01/30 15:04
2F:→ TrebleA:抱歉其實我不太懂中間的name(r)是指給我的M行向量名稱嗎? 01/30 15:27
3F:推 Wush978:你需要學R的資料結構和流程控制 01/30 15:31
4F:→ Wush978:(for TrebleA) 01/30 15:32
5F:→ TrebleA:SORRY po文後才看到這個推文 好的 謝謝 01/30 15:41