2012-01-24 8 views
1

私はは、LMを持つオブジェクトとrollapply

test <- to.minutes(x, OHLC=TRUE) 
colnames(test) <- c("Open","High","Low","Close") 
test 
2011-06-07 14:23:00 435 435 435 435 
2011-06-07 14:26:00 430 435 430 435 
2011-06-07 14:32:00 435 435 430 430 
2011-06-07 14:35:00 430 430 430 430 
str(test) 

    An ‘xts’ object from 2011-03-10 to 2011-06-08 23:56:00 containing: 
    Data: num [1:20426, 1:4] 350 360 375 375 370 ... 
- attr(*, "dimnames")=List of 2 
    ..$ : NULL 
    ..$ : chr [1:4] "Open" "High" "Low" "Close" 
    Indexed by objects of class: [POSIXct,POSIXt] TZ: 
    xts Attributes: 
NULL 

間隔分に変換するダニのデータを使用しています今、私は次のようにrollapply使用しよう:

test1<-rollapply(test, width=20, FUN=function(x) {x$xt <-seq(1-nrow(x),0); lm(Close ~poly(xt,4),x)}, by.column=FALSE, align="right") 

をそれが

を生成し、
Error in eval(expr, envir, enclos) : object 'Close' not found 
In addition: Warning message: 
In x$xt <- seq(1 - nrow(x), 0) : Coercing LHS to a list 
+1

あなたはセミコロン(または改行)が必要 'seq'と' lm'間。ありがとう@JoshuaUlrich。 –

+0

私はそれをし、それは私に新しい誤りを与える。元の投稿を訂正とエラーで更新しました。 – user1155299

答えて

4

reproducible examplesを提供してください。再現可能な例を次に示します。

library(xts) 
data(sample_matrix) 
test <- as.xts(sample_matrix) 

myFun <- function(x) { 
    x$xt <- seq(1-nrow(x),0) 
    lm(Close ~ poly(xt,4), data=x) 
} 
test1 <- rollapplyr(test, width=20, FUN=myFun, by.column=FALSE) 

警告は良いヒントです。 zoo:::rollapply.zooのソースを見ると、マトリックスであるcoredata(your_data)にあなたの関数が実行されていることがわかります。 $関数は行列のサブセット化では機能しませんので、代わりにcbindを使用する必要があります。

しかしlm data.frameではなく、行列を必要とし、そのための操作を行います。

myFun2 <- function(x) { 
    x <- data.frame(x, xt=seq(1-nrow(x), 0)) 
    lm(Close ~ poly(xt,4), x) 
} 
test1 <- rollapplyr(test, width=20, FUN=myFun2, by.column=FALSE) 
+0

感謝ジョシュア、私は私の次の投稿のためのガイドラインに従います。 – user1155299

+0

@ user1155299:警告はないので、あなたが何を指しているのかわかりません。あなたのエラーを再現することはできませんが、私は別のエラーが発生します: "動物園のエラー(rval、index(x)[i]):" x ":無効な動物園オブジェクトを定義しようとする"。 '?confint'は関数が"適合モデルオブジェクト "を期待していると言っています。あなたはそれを "動物園"オブジェクトに渡しているので、私はそれがエラーを投げるのは驚きではありません。もう一度やり直して、自分の問題への取り組みを再考する必要があるようです。 –

+0

私は間違いをしていましたので、投稿を削除しましたが、あなたはすぐにそれをキャッチしていました;-) – user1155299

関連する問題