2016-07-08 5 views
1

Rの多項式回帰を使用してサンプルの将来の値を予測しようとしました。サンプル内のyの値がウェーブパターンを形成します。例Rの多項式回帰を使用して将来の値を予測する

x = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 
y= 1,2,3,4,5,4,3,2,1,0,1,2,3,4,5,4 

しかし、グラフは結果y値が期待されていたものとは全く違っていた将来の値に対してプロットされるために 。波のパターンの代わりに、yの値が増加し続けるグラフが得られました。

futurY = 17,18,19,20,21,22 

は多項式回帰の異なる程度を試みたが、futurYの予測結果は、以下の

を期待されたものとは大幅に異なっていた結果を得るために使用された試料のRコードである

dfram <- data.frame('x'=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)) 
dfram$y <- c(1,2,3,4,5,4,3,2,1,0,1,2,3,4,5,4) 
plot(dfram,dfram$y,type="l", lwd=3) 
pred <- data.frame('x'=c(17,18,19,20,21,22)) 
myFit <- lm(y ~ poly(x,5), data=dfram) 
newdata <- predict(myFit, pred) 
print(newdata) 
plot(pred[,1],data.frame(newdata)[,1],type="l",col="red", lwd=3) 

未知の将来のy値を予測するために使用する正しいテクニックですか、または予測のような他のテクニックを使用する必要がありますか?

+1

5次多項式で予測しようとすると、失敗または混乱のために運命にあるように見えます。フィッティングする三角関数についていくつか検索したいかもしれません。 –

答えて

1
# Reproducing your data frame 
dfram <- data.frame("x" = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16), 
        "y" = c(1,2,3,4,5,4,3,2,1,0,1,2,3,4,5,4)) 

グラフから、私は信号の位相と期間を得ました。それを自動的に計算するより良い方法があります。

# Phase and period 
fase = 1 
per = 10 

私は三角波の信号方程式を入れました。黒線は、元の信号である

fit <- lm(y ~ I((((trunc((x-fase)/(per/2))%%2)*2)-1) * (x-fase)%%(per/2)) 
      + I((((trunc((x-fase)/(per/2))%%2)*2)-1) * ((per/2)-((x-fase)%%(per/2)))) 
      ,data=dfram) 

# Predict the old data 
p_olddata <- predict(fit,type="response") 

# Predict the new data 
newdata <- data.frame('x'=c(17,18,19,20,21,22)) 
p_newdata <- predict(fit,newdata,type="response") 

# Ploting Old and new data 
plot(x=c(dfram$x,newdata$x), 
    y=c(p_olddata,p_newdata), 
    col=c(rep("blue",length(p_olddata)),rep("green",length(p_olddata))), 
    xlab="x", 
    ylab="y") 
lines(dfram) 

enter image description here

、青い円は、原点と緑色の円の予測は、新たなデータのために予測されています。

グラフには、データにノイズがないため、モデルに最適です。実際のデータセットでは、フィット感がそれほど良くないように見つけることができます。

+0

あなたの寛大な時間を取る!それでも、ポリスは補間には適しており、外挿(予測)にはうんざりであることをOPに警告することができ、より良いアプローチに移る時が来ました。 – welch

+0

お時間をいただきありがとうございます。これは正しい方向を指すのに役立ちました。そのような場合に多項式回帰を使用できないことを確認できます。 – sisusisu

+0

ありがとう@sisusisu。繰り返しサイクルを示す信号がある場合、多項式回帰が最良の選択肢ではないかもしれません。数学的なシリーズの三角関数は、あなたが探しているものかもしれません。 –

関連する問題