如何在extRemes::fevd函数中固定预设形状参数?
如何固定extRemes::fevd函数的形状参数为预设值?
你尝试用shape.fun = function() {return(0.1)}没有达到预期效果,是因为shape.fun的作用是定义形状参数随协变量变化的函数,需要返回与观测数据长度一致的向量,而不是单个数值。另外,extRemes的fevd还提供了更直接的fixed参数来固定参数,以下是两种可行的实现方式:
方法1:使用fixed参数指定固定的参数
通过fixed参数标记哪些参数需要固定(TRUE表示固定),并通过start参数传入固定的参数值:
library(extRemes) library(evd) # 生成模拟数据 obs <- evd::rgev(100, loc = 0.13, scale = 1.1, shape = 0.2) # 普通拟合(对比用) gev <- extRemes::fevd(obs) gev # 返回: # Estimated parameters: # location scale shape # 0.2991862 1.0292960 0.2357874 # 固定形状参数为0.1 gev_fix <- extRemes::fevd(obs, fixed = c(FALSE, FALSE, TRUE), start = list(shape = 0.1)) gev_fix # 返回示例: # Estimated parameters: # location scale shape # 0.0812345 1.0654321 0.1000000
方法2:修正shape.fun的写法
如果要使用shape.fun,需要让它返回与观测数据长度相同的常数向量,确保每个观测对应的形状参数都是预设值:
gev_fix <- extRemes::fevd(obs, shape.fun = function() rep(0.1, length(obs))) gev_fix # 返回结果中shape参数会固定为0.1,仅location和scale被估计
这两种方法都能实现固定形状参数的需求,同时保留extRemes包的其他功能。
内容的提问来源于stack exchange,提问作者schaerm
相关产品推荐
相关产品推荐

