[解決済み] ts(x) のエラー : 'ts' オブジェクトは1つ以上のオブザベーションを持つ必要があります。
2022-02-18 07:21:05
質問
を使用して予測する場合
forecast
ライブラリで、次のコードが期待通りに実行されないことに気づきました。
library(forecast)
library(dplyr)
df1 <- data.frame(gp=gl(20,5), dt=seq(1:100))
get <- function (df1){
ts1 <- ts((df1%>%filter(gp==2))$dt)
as.numeric(forecast(ar(ts1),15)$mean)
}
print(get(df1))
エラーリターンは
Error in ts(x) : 'ts' object must have one or more observations.
原因は
ar
または
ar.burg
関数を使用します。なぜなら、もしこの関数を
ets
などでは、この関数はうまく動作します。
もっと不思議なのは、コードを変更すると。
library(forecast)
library(dplyr)
df1 <- data.frame(gp=gl(20,5), dt=seq(1:100))
ts1 <- ts((df1%>%filter(gp==2))$dt)
get <- function (ts1){
as.numeric(forecast(ar(ts1),15)$mean)
}
print(get(ts1))
コードも正常に実行されています。のバグかもしれませんね。
ar
関数があり、問題はスコープに何らかの関連があるようです。このことについて何か考えがありますか?
解決方法は?
問題はスコープに関係することです。
forecast()
は、モデルの適合に使用される時系列を見つけようとします。forecastパッケージの関数(例えば
ets
) はこの情報をモデルオブジェクトに格納するので、簡単に
forecast()
を見つけることができます。しかし
ar()
はstatsパッケージのもので、モデル適合に使用した時系列を保存しません。そこで
forecast()
を探しに行きます。もしコードを
get()
関数を使用すれば、問題なく動作します。
forecast()
を見つけることに成功しました。
ts1
オブジェクトをローカル環境で使用することができます。しかし、その中の
get()
関数を使用すると、エラーが発生します。
簡単な修正の1つは、フィットしたモデルに情報を追加してから
forecast
:
library(forecast)
library(dplyr)
df1 <- data.frame(gp=gl(20,5), dt=seq(1:100))
ts1 <- ts((df1%>%filter(gp==2))$dt)
get <- function (ts1){
fit <- ar(ts1)
fit$x <- ts1
as.numeric(forecast(fit,15)$mean)
}
print(get(ts1))
または
predict
の代わりに
forecast
:
library(dplyr)
df1 <- data.frame(gp=gl(20,5), dt=seq(1:100))
ts1 <- ts((df1%>%filter(gp==2))$dt)
get <- function (ts1){
fit <- ar(ts1)
as.numeric(predict(fit,n.ahead=15)$pred)
}
print(get(ts1))
関連
-
[解決済み】xtsオブジェクトでエラー: "antempt to set 'colnames' on the object with less than two dimension "を克服する方法
-
[解決済み】基本 - T-検定 -> グループ化因子は正確に2水準でなければならない
-
[解決済み] 不適合な配列のコードエラー
-
[解決済み】エラー。Rの次元数が正しくない
-
[解決済み】GLM解析での警告
-
[解決済み】ggplotのエラー。関数型オブジェクトのスケールを自動的に選択する方法がわかりません。
-
[解決済み】Rの整数オーバーフローとは何ですか、そしてどのように起こるのですか?
-
[解決済み】Rでのデータ操作。'X'はアトミックでなければならない
-
[解決済み】Rで、Error: ggplot2 doesn't know how to handle of data of class numericに対処する。
-
[解決済み】dplyr: "Error in n(): 関数は直接呼ばれるべきではありません"
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】R - if文の引数の長さが0である。
-
[解決済み】rbind エラー。"名前が以前の名前と一致しない"
-
[解決済み】Rでの関数の最適化(L-BFGS-Bでは'fn'に有限の値が必要)。
-
[解決済み】apply()とadply()の出力が異なる件)
-
[解決済み】reshape2 meltの警告メッセージ
-
[解決済み】Rで結果の行数がベクトル長(arg 2)の倍数でない件
-
[解決済み】 .subset2(x, i, exact = exact)のエラー:Rの添え字が範囲外である。
-
[解決済み】.External.graphics Rでエラーが発生しました。
-
[解決済み】'NULL'型の非(リストまたはベクトル)に適用されるis.na()は何を意味するのか?
-
[解決済み】起動時にパーをデフォルト値にリセットする方法