2017-01-26 26 views
0

Rのlm関数を使用して、複数の正弦波(正確には3つ)をデータに適合させようとしていますが、正しい:線形回帰(R)を持つ複数の正弦波をフィット

Sine wave fit to data

緑色の線は、それがあるべきよう、ちょっと不安定ですが、それは(放物線が追加で)唯一のサインのようだ、と非常によくデータと一致していません。私は間違って何をしていますか?

Iを使用コード:(。。これらは私に与えられたように期間が、ハードコードされている。また、timetopdhは、ある時点でheightdh水位、秒単位の時間である)

plot(timetopdh,heightopdh,xlim=topvector, ylim = c(0,270)) 

period1 <- 545 
period2 <- 205 
period3 <- 85 

sin11 <- sin(2*pi/period1*timetopdh) 
sin12 <- cos(2*pi/period1*timetopdh) 

sin21 <- sin(2*pi/period2*timetopdh) 
sin22 <- cos(2*pi/period2*timetopdh) 

sin31 <- sin(2*pi/period3*timetopdh) 
sin32 <- cos(2*pi/period3*timetopdh) 

lmsinus <- lm(heightopdh ~ poly(timetopdh,2) + sin11 + sin12 + sin21 + sin22 + sin31 + sin32) 

fitted_for_lines <- fitted(lmsinus) 
pred <- predict(lmsinus, newdata=data.frame(timetopdh = timetopdh)) 
lines(timetopdh, pred, col=3, lwd=3) 

答えて

1

それはかなりよくマッチしています、それは正確にデータに従うべきではありません。線形モデルは、(直線の)最適フィットを作成して、可能な限りYの変動を減らすことができます。緑色の線はまったく同じです(直線ではありません)。

1行しか求めていないので、1行しかありません。時間と高さは、リストに格納され、プロットに渡された順に、ポイントごとにプロットされました。

提供されたデータを使用して予測から線が引かれましたが、点は他の2つの集合から描画されました。 timetopdh,heightopdh。副鼻腔の波が印刷されるようにしたい場合は、適切なグラフ化方法(通常は折れ線グラフ)を使用して、それぞれの名前を付けて名前を尋ねる必要があります。

+0

あなたは正しいですが、フィット感が完璧であるとは思わないはずです。しかし、私が意味していたことは、回帰は、三つの正弦波のうち一つだけを考慮に入れるように見えるということです。緑の線は標準的な正弦波と非常に似ています。 あなたは最後の文章で何を意味するのかを詳しく説明できますか(「あなたはそれぞれの名前を要求する必要があります...」)? – Pandaqi

+0

実際のsin変数をどこに入力するのかわかりませんが、プロットする高さと時間のデータは1つだけです。 (私はそれらのファイルに何が入っているかを知るためのデータを見ることはできません)。 Rが3つの計算のsin波をプロットするようにするには、明示的にplot(sin31)に入力して、予測線だけでなく多くの望みを追加します。 – sconfluentus

+0

これらのファイルにすべての点がある場合、波は何らかの方法で重なり、散布図が個々の動きを隠しています。あなたが各波のパスからポイントを引き出し、ラインとしてプロットするならば。お互いの違いやAB線が未加工の点​​よりも明白になるところ---接続点が物語をもっと語ります。 – sconfluentus