Re: [程式] R package output處理問題 [tseries]

看板Statistics作者 (我也想要有年終)時間13年前 (2013/01/30 15:40), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《blackalert (右上角星位)》之銘言: : ※ 引述《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)) : : } : : 很開心的把結果跑出來後遇到了一個難題 : : 以第一行為例的話 用這個套件跑出來的結果是 : : 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) 就好了~ : 我其實不太懂時間數列, : 如果有什麼錯誤還請指教~ 感謝blackalert大的指導 嘗試後成功得到我想要的矩陣形式的資料表示 程式碼 及結果架構如下 M <-matrix(,34,4) ##DF TEST for(i in 1:34){ cat("i=",i) r <- adf.test(INDEX[,i],k=0) s <- r$statistic l <- r$parameter p <- r$p.value M[i,] <- c(i,s,p,l) } 結果 M : V1 V2 V3 V4 1 1 DF-statistic p-value lags 2 2 DF-statistic p-value lags ... 34 34 DF-statistic p-value lags 只是我現在有點好奇M矩陣中的c(V1,V2,V3,V4)要怎麼命名? 異想天開的亂使用這個code > c("i","DF statistic","p-value","lag") <- names(c(M[,1],M[,2],M[,3],M[,4])) 出現了錯誤的訊息如下: 錯誤在c("i", "DF statistic", "p-value", "lag") <- names(c(M[, 1], M[, : 賦值目標擴充到非語言的物件 看來是無法使用在矩陣之後的數陣命名上面XD 謝謝,希望能不吝指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.224.85.12

01/30 17:10, , 1F
colnames(M) <- c("i", "DF statistic", "p-value", "lag")
01/30 17:10, 1F

01/30 17:11, , 2F
你原來這句的邏輯不對 你應該要把名字指派給矩陣 但你做
01/30 17:11, 2F

01/30 17:11, , 3F
的事情剛好相反
01/30 17:11, 3F

01/30 22:28, , 4F
了解了,謝謝^_^
01/30 22:28, 4F
文章代碼(AID): #1H2CvNlj (Statistics)
文章代碼(AID): #1H2CvNlj (Statistics)