0

時系列の実際のデータと適合モデルの値のプロットに関連する質問があります。特に、私の質問はこの論文に関連しています。

https://static.googleusercontent.com/media/www.google.com/en//googleblogs/pdfs/google_predicting_the_present.pdf

ドキュメントの付録に、R スクリプトがあります。ここで、最初に 2 つの質問があります。

##### Define Predictors - Time Lags;
dat$s1 = c(NA, dat$sales[1:(nrow(dat)-1)]);
dat$s12 = c(rep(NA, 12), dat$sales[1:(nrow(dat)-12)]);

do との機能は何ですか:

##### Divide data by two parts - model fitting & prediction
dat1 = mdat[1:(nrow(mdat)-1), ]
dat2 = mdat[nrow(mdat), ]

最後の主な質問: データを次のように計算するとします。

fit = lm(log(sales) ~ log(s1) + log(s12) + trends1, data=dat1);
summary(fit)

adj。R 二乗値は 0.342 です。したがって、上記のモデルは、モデル化されたデータ (予測データ?) と実際のデータの間の分散の約 34% を説明していると私は主張します。では、この「モデル グラフ」(フィッティング) をどのようにプロットして、論文にこのようなものを表示できますか?

フィット

2番目のグラフの「適合」は、実際には推定モデルからのデータであると思いますよね? もしそうなら、この部分はスクリプトに欠けているようです。

どうもありがとう!

編集1:

これを試しました:

# Actual values and fitted values
plot(sales ~ month, data= dat1, col="blue", lwd=1, type="l", xaxt = "n", xaxs="r",yaxs="r", xlab="", ylab="Total Sales");
par(new=TRUE)
plot(fitted(fit) ~ month, data= dat1, col="red", lwd=1, type="l", xaxs="r", yaxs="r", yaxt = "n", xlab="Month", ylab="Index", xaxt="n");
axis(4)

出力: (関数 (式、データ = NULL、サブセット = NULL、na.action = na.fail、: 変数の長さが異なります (「月」が見つかりました) のエラー)

4

1 に答える 1

1
dat$s1 = c(NA, dat$sales[1:(nrow(dat)-1)])

これにより、最初の要素が NA であるs1データを含む新しい列が作成されます。salesの最後のアイテムがsalesありません。

dat$s12 = c(rep(NA, 12), dat$sales[1:(nrow(dat)-12)])

12 個の NA を含む列をクレートs12し、残りは からの最初のnrow(dat)-12値ですdat$sales

dat1 = mdat[1:(nrow(mdat)-1), ]
dat2 = mdat[nrow(mdat), ]

dat1は最後の観測 (行) 以外のすべてであり、最後dat2の行のみです。応答 ( ) を予測する場合、少なくとも式の右側にある列 (説明変数とも呼ばれる)をsalesdata.frame に入力するだけで済みます。使われているところです。s1s12newdatapredict()dat2

predict.fit = predict(fit, newdata=dat2, se.fit=TRUE)

この次の行は、 を使用してモデルを当てはめdat1ます。

fit = lm(log(sales) ~ log(s1) + log(s12) + trends1, data=dat1)

fitted(fit)適合値が得られます。predict(fit)どこが違うのか比べてみてください。

各ステートメントの末尾にあるセミコロンは冗長です。

于 2016-03-11T08:21:27.387 に答える