You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用fitModel与coef获取正弦函数最佳拟合模型参数?

如何用fitModel和coef获取正弦拟合模型的A、P、h、v参数

你的代码存在两个关键问题,导致无法正确拟合并获取目标参数:

1. 模型公式写死参数值,未使用可优化变量

原代码里的公式直接把25、80等固定数值写死,fitModel无法识别这些是需要优化的参数,自然没法输出最佳的A、P、h、v。

2. 语法错误与变量对应逻辑颠倒

  • fitModel调用缺少闭合的大括号,语法不完整;
  • 模型的因变量和自变量搞反了:你的绘图逻辑是People~Year(以Year为自变量,People为因变量),但公式写成了Year~...,完全颠倒了因果关系。

正确的实现步骤与代码

第一步:定义带参数的正弦模型并完成拟合

把A、P、h、v作为变量放入公式,修正变量顺序,补全语法:

# 定义带参数的正弦模型,因变量为People,自变量为Year
bestSinusoidalModel <- fitModel(
  People ~ A * sin( (2*pi/P) * (Year - h) ) + v,
  data = HispanicPopulation,
  start = list(A=25, P=80, h=1990, v=30)
)

# 提取最佳拟合参数
coef(bestSinusoidalModel)

第二步:绘制原始数据与最佳拟合线

用拟合好的模型绘制曲线,替换你原来的固定参数绘图代码:

# 绘制原始散点
plotPoints(People~Year, data = HispanicPopulation)

# 绘制初始猜想模型(蓝色)
plotFun(25 * sin((2*pi/80) * (Year-1990)) + 30 ~ Year, col="blue", add=TRUE)

# 绘制最佳拟合模型(红色)
plotFun(bestSinusoidalModel(Year) ~ Year, col="red", add=TRUE, lwd=2)

关键说明

  • 公式中的A(振幅)、P(周期)、h(水平偏移)、v(垂直偏移)会被fitModel识别为待优化参数,start参数提供初始值帮助算法收敛;
  • 调用coef(bestSinusoidalModel)会返回一个包含A、P、h、v最佳值的向量;
  • 绘图时用bestSinusoidalModel(Year)直接调用拟合好的模型,自动代入优化后的参数。

内容的提问来源于stack exchange,提问作者F2LANA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 13:21:16