Como calcular a área sob cada extremidade de uma curva senoidal
Dado este conjunto de dados:
y<-c(-13,16,35,40,28,36,43,33,40,33,22,-5,-27,-31,-29,-25,-26,-31,-26,-24,-25,-29,-23,4)
t<-1:24
Meu objetivo é calcular duas áreas. A primeira área integraria apenas os dados da primeira parte da curva encontrada acima da linha Zero. A segunda área integraria dados da segunda parte da curva encontrada abaixo da linha zero.
Primeiro, eu gostaria de ajustar uma onda senoidal a esses dados. Usando esta excelente resposta:
https://stats.stackexchange.com/questions/60994/fit-a-sinusoidal-term-to-data
Consegui encaixar uma onda senoidal (usarei o periódico com o segundo harmônico que parece ter um melhor encaixe)
ssp <- spectrum(y)
per <- 1/ssp$freq[ssp$spec==max(ssp$spec)]
reslm <- lm(y ~ sin(2*pi/per*t)+cos(2*pi/per*t))
summary(reslm)
rg <- diff(range(y))
plot(y~t,ylim=c(min(y)-0.1*rg,max(y)+0.1*rg))
lines(fitted(reslm)~t,col=4,lty=2) # dashed blue line is sin fit
# including 2nd harmonic really improves the fit
reslm2 <- lm(y ~ sin(2*pi/per*t)+cos(2*pi/per*t)+sin(4*pi/per*t)+cos(4*pi/per*t))
summary(reslm2)
lines(fitted(reslm2)~t,col=3) # solid green line is periodic with second harmonic
abline(h=0,lty=2)
Em seguida, gostaria de calcular a área sob a curva que é apenas positiva, bem como a área sob a curva que é exclusivamente negativa. Tive sorte em procurar respostas semelhantes usando as funções da AUC nos pacotes Bolstad2 e Mess. Mas meus pontos de dados não se enquadram na linha zero e não sei como dividir a função seno em áreas somente acima da linha Zero e somente abaixo da linha Zero.