【问题标题】:Testing different values in a function R在函数 R 中测试不同的值
【发布时间】:2018-11-10 05:52:13
【问题描述】:

现在我正在尝试用高斯拟合来拟合光谱数据。

我想构建一个循环来迭代每个峰值位置、吸光度和带宽的“猜测”范围内的值组合,直到我的 R^2 值最小化。

但是,我不知道如何构建我的代码。我正在考虑通过while循环运行它,直到R^2值低于某个阈值,但我不知道如何运行我的变量的所有组合......

有没有人知道从哪里开始?

谢谢!

这是我正在使用的:

peak1P <- seq(200, 300, 1)  % Likely Peak Positions
peak2P <- seq(400, 550, 1)
peak3P <- seq(600,750, 1)

peak1A <- seq(0, 0.6, 1)  % Likely Peak Absorbance
peak2A <- seq(0, 0.5, 1)
peak3A <- seq(0, 0.3, 1)

peak1B <- seq(0, 20, 1)  # Likely Peak Bandwidth
peak2B <- seq(0, 20, 1)
peak3B <- seq(100,300, 1)

# Individual Peak Models
AbsG1 = peak1A*exp((-4*log(2))*(((((WvLnV/1500)-peak1P/1500)^2))/(peak1B/1500)))
AbsG2 = peak2A*exp((-4*log(2))*(((((WvLnV/1500)-peak2P/1500)^2))/(peak2B/1500)))
AbsG3 = peak3A*exp((-4*log(2))*(((((WvLnV/1500)-peak3P/1500)^2))/(peak3B/1500)))

# Final Fit to compare with Data
AbsF <- AbsG1 + AbsG2 + AbsG3

理想情况下,我的代码将遍历 peak(1-3)P、peak(1-3)A 和 peak(1-3)B 中的每个元素组合,直到误差最小化(我的计算函数此处未显示错误)

【问题讨论】:

    标签: r


    【解决方案1】:

    这类问题在统计数据中被称为“混合建模”,有很多标准方法,具体取决于您拥有的数据类型、您对生成它的底层过程的了解程度以及您想要的框架对结果进行建模

    如果您真的不想使用现有软件包之一;您将遵循编写一个函数的标准估计过程,该函数采用一组参数并计算它们的拟合程度(我建议基于概率/似然的方法而不是 R^2),然后将其传递给类似 @987654321 @ 或蒙特卡罗方法(例如 MCMC)。这个想法是从随机猜测开始,然后少量移动参数以找到“最佳”参数集。更好的方法会说明它对各种估计的置信度(例如 optim() 的 Hessian 或贝叶斯 MCMC 方法的可信区间)

    【讨论】:

      猜你喜欢
      • 2013-06-25
      • 2023-03-19
      • 1970-01-01
      • 2020-04-17
      • 1970-01-01
      • 2011-04-25
      • 2022-01-01
      • 1970-01-01
      • 2019-11-10
      相关资源
      最近更新 更多