【问题标题】:Use R-function "nls" to estimate GEV parameters使用 R 函数“nls”估计 GEV 参数
【发布时间】:2013-06-17 09:18:49
【问题描述】:

我想使用加权最小二乘法估计 GEV(广义极值)分布的参数。我使用 R,并且我发现了一个名为 nls 的函数,我认为它可以用于此目的。它要求一个公式和一个可选的数据集。我想 GEV 公式和年度最大值系列应该在这里,但我不确定如何。有没有人使用过 nls 并且知道如何做到这一点?

#Vector of ranged annual maxima
x <- c(21,24,29,32,32,34,35,35,35,36,37,37,38,40,40,41,43,47,47,52)
w <- c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2)
data <- list(x=x,w=w)
nls(y ~ exp(-(1+((x-location)/scale))^(-1/shape)),data=data, weights=w,start=list(location=5,scale=2,shape=0.10))                 

错误表明 y 缺失。 y 是我们优化 GEV 参数时得到的,因此对于所有 x(也取决于权重),y 变得尽可能接近 x。所以在我们估计 GEV 参数之前 y 是未知的......

【问题讨论】:

  • 是的,nls 被很多人大量使用。给我们a reproducible example,我们可以为您提供帮助。
  • 我添加了一个示例,虽然它不是很有用,因为我的问题是我不知道如何制定代码。
  • 什么是xdata 参数需要一个包含amxw 的data.frame。您需要为nls 提供起始值,例如start=list(location=...,scale=...,shape=...。找到这些起始值是您的工作。
  • x 实际上是当我想到它时。我更新了问题和代码。
  • 回归需要 x 和 y 值。

标签: r nls


【解决方案1】:

正如@Roland 评论的那样,您需要有两个变量来进行回归。在这种情况下,您只有一个:GEV 的观测值。因此,您实际上并不想使用nls 来拟合分布,而是使用其他一些算法,例如最大似然。请参阅 evd 包,它具有处理 GEV 的功能,包括从数据中拟合它们。

【讨论】:

  • 谢谢。我已经使用最大似然和概率加权矩将 GEV 拟合到数据中。我想使用 nls 的原因是我想尝试一种称为“加权最小二乘法”的方法,但我找不到足够的信息来从头开始编程。
猜你喜欢
  • 1970-01-01
  • 2019-10-18
  • 2017-02-12
  • 1970-01-01
  • 2013-02-08
  • 1970-01-01
  • 2014-08-27
  • 2013-08-31
  • 1970-01-01
相关资源
最近更新 更多