2017-01-26 24 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의 변화를 줄일 수있는 (직선의) 가장 적합한 것을 만들어야합니다. 초록색 선은 정확히 똑같지 만 (직선은 아님)

한 줄만 입력했기 때문에 한 줄만 있습니다. 시간과 높이는 점에 저장되고 목록에 전달 된 목록의 순서에 따라 점마다 점으로 표시되었습니다.

제공된 데이터를 사용하여 예측에서 선이 그려 지지만 점은 다른 두 세트에서 그려집니다. timetopdh,heightopdh. 부비동 파가 인쇄되기를 원한다면 적절한 그래프 방법을 사용하여 각각의 이름을 묻는 것이 좋습니다. 일반적으로 선 그래프입니다.

+0

네가 맞아, 나는 그 적합성이 완벽하다고 기대해서는 안된다. 그러나 그린 라인이 표준 사인파와 매우 비슷해 보이는 것처럼 회귀 분석에서 3 개의 사인파 중 하나만 고려하는 것처럼 보였습니다. 마지막 문장에서 의미하는 바를 자세히 설명해 주시겠습니까 ("각자 이름을 물어야합니다 ...")? – Pandaqi

+0

플롯 할 실제 죄 변수를 입력 한 위치가 보이지 않고 높이 및 시간 데이터의 단일 세트 만 표시됩니다. (나는 그 파일에 무엇이 있는지를 알기 위해 데이터를 볼 수 없다). 만약 R이 그 계산들 중 세 가지의 죄파를 음모로 꾸미기를 원하면, 그 음모를 명시 적으로 (sin31)로 밀어 넣고, 예측 선뿐만 아니라 당신이 원하는 많은 것을 추가하십시오. – sconfluentus

+0

파일에 모든 점이 있으면 파도가 어떤 식 으로든 겹치고 산점도가 개별 움직임을 감추고있는 것입니다. 각 웨이브 패스에서 포인트를 꺼내서 선으로 그려보십시오. 서로와 AB 라인과의 차이가 미가공 포인트보다 분명 해지면 연결 지점이 더 많은 이야기를 전달합니다. – sconfluentus