用R拟合a*sin(b*x+;c)形式的谐波模型

用R拟合a*sin(b*x+;c)形式的谐波模型,r,R,在我的时间序列建模课上,我们被教导通过在不同频率创建几个正弦和余弦项,然后保留那些重要的项来建模时间序列中的谐波模式 然而,现在我想找到最适合a*sin(b*x+c)形式的模型,我不知道从哪里开始。虽然我支持博舍克的评论,但我只是为了好玩: # As you dont provide any data, here some simulated data: set.seed(1) x <- seq(0, 10, length = 100) y <- sin(2*x + 5) + rno

在我的时间序列建模课上,我们被教导通过在不同频率创建几个正弦和余弦项,然后保留那些重要的项来建模时间序列中的谐波模式


然而,现在我想找到最适合a*sin(b*x+c)形式的模型,我不知道从哪里开始。

虽然我支持博舍克的评论,但我只是为了好玩:

# As you dont provide any data, here some simulated data:
set.seed(1)
x <- seq(0, 10, length = 100)
y <- sin(2*x + 5) + rnorm(100, sd=0.5)
y_clean <- sin(2*x + 5)

# Plot of the noised data (y) and the noiseless line (y_clean) which you want to approximate through your model:
plot(x, y, ylim = c(-2,3))
lines(x,y_clean, col = "green")

# Model estimation and adding of the fitted values to the previous plot:
model <- nls(y~a*sin(b*x+c), start = list(a=1,b=1.5, c=1),control = list(maxiter = 500))
lines(x, fitted(model), col = "red")

legend("topright", col=c("green", "red"), legend = c("\"true\" curve", "fitted line"), bty = "n", lty = 1)
#由于您没有提供任何数据,这里有一些模拟数据:
种子(1)

如果你证明你至少自己尝试过解决这个问题,这里的x人往往会反应更积极。然后你可以用你的尝试和一个可复制的例子来回答你的问题。通过这些相对温和的步骤,你会惊讶于你能找到的帮助。现在这句话的意思是“请为我做我的工作”。还要结账吗?nlshow您会在这里使用selfstart吗?我的数据非常复杂,我得到了一些错误,因为我的估计不够好。我知道Logiss是一个自启动函数,但这里可以使用类似的函数吗?可以使用nls2包获取启动值。@G.Grothendieck,您能解释一下如何使用吗?在我看来,nls2只是添加了“蛮力”算法的nls。在帮助文件中有一些示例用于
nls2