【问题标题】:model selection with tweedie distributions in MuMIn package R在 MuMIn 包 R 中使用 tweedie 分布进行模型选择
【发布时间】:2016-11-16 22:46:45
【问题描述】:

我正在尝试使用 R 中的 tweedie(复合泊松)分布式数据进行 AICc 模型选择和模型平均。

我正在使用 AICcmodavg R 包但没有成功,然后当我在这里遇到建议 (https://stats.stackexchange.com/questions/141806/glm-model-selection-using-aicc-with-tweedie-distribution) 时决定尝试 MuMIn 包

"你可以直接在 MuMIn 的函数中使用 AICtweedie,只需将其指定为 rank 参数。"

我按如下方式设置我的模型我的响应变量 (NVIR) 是东部蝾螈成虫的每单位努力捕获量,我的解释变量是我的采样点的各种栖息地特征。

m1<- glm(NVIR~Water_T+cond+DO+ORP+pH+max_depth+type, 
    family = tweedie(link.power=0, var.power=1.3), data = cpue)
m2<- glm(NVIR~Water_T+cond+DO+ORP+pH+littoral_slope+type, 
    family = tweedie(link.power=0, var.power=1.3), data = cpue)
m3<- glm(NVIR~pH+DO+cond+max_depth+type, 
    family = tweedie(link.power=0, var.power=1.3), data = cpue)
m4<- glm(NVIR~pH+DO+cond+littoral_slope+type, 
    family = tweedie(link.power=0, var.power=1.3), data = cpue)
m5<- glm(NVIR~cond+type+pH+max_depth, 
    family = tweedie(link.power=0, var.power=1.3), data = cpue)

然后尝试了这一行

model.sel(m1, m2, m3, m4, m5, rank = AICc, rank.args = AICtweedie)

并收到错误

Error in UseMethod("logLik") : 
no applicable method for 'logLik' applied to an object of class "function"
In addition: Warning message:
In model.sel.default(m1, m2, m3, m4, m5, rank = AICc, rank.args =   AICtweedie) :
models are not all fitted to the same data

另外,我也试过这条线

model.sel(m1,m2,m3,m4,m5, rank.args=AICtweedie)

得到了这个错误:

Error in get(x) : object 'Tweedie' not found
In addition: Warning message:
In model.sel.default(m1, m2, m3, m4, m5, rank.args = AICtweedie) :
models are not all fitted to the same data

我想知道问题出在我的代码上,还是 tweedie 系列与这个包不兼容。

感谢您的宝贵时间。

【问题讨论】:

  • 您是否尝试过将AICtweedie 用于rank 参数而不是rank.args 参数?
  • @aosmith 这也是我的建议。尝试使用model.sel(m1,m2,m3,m4,m5, rank=AICtweedie)
  • 谢谢!我也试过'model.sel(m1,m2,m3,m4,m5,rank = AICtweedie)'并得到错误'get(x)错误:找不到对象'Tweedie'
  • 现在已在 MuMIn 1.40.8 中修复(目前仅在 R-Forge 上)。
  • 谢谢大家!感谢您的时间和 cmets。

标签: r distribution glm mumin tweedie


【解决方案1】:

rank = tweedie::AICtweedie

仅适用于遇到此问题的任何人

【讨论】:

  • 您知道为什么rank=AICtweedie 不适用于 OP(如 cmets 中所述)吗?多个包中是否存在AICtweedie 对象?
  • @BenBolker model.sel 假定 family(model)$family 将是族函数的名称。在这种情况下,它是"Tweedie" 而不是"tweedie",因此是问题所在。处理tweedie 家庭还有其他问题 - 我会尽快调查。
  • 嗯。在glmmTMB 中,beta_family() 产生了一个$family 等于“beta”的对象。有没有办法更普遍地处理这个问题......? (我们也许可以在不破坏任何东西的情况下更改$family 组件......如果这是最好的方法,请离线告诉我......)
  • @BenBolker 别担心 - 我看到代码不应该期望所有 family 对象都符合标准结构,所以我想我只是删除了那个位(这并不重要以任何方式)。即使是MASS::negative.binomial 也很痛苦,因为它的$family 例如"Negative Binomial(1.23)"
  • 谢谢大家!感谢您的时间和 cmets。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
  • 1970-01-01
  • 2012-11-04
  • 1970-01-01
  • 2016-01-29
  • 2014-09-23
相关资源
最近更新 更多