【问题标题】:Make a loop on different family for glm in R为 R 中的 glm 在不同的家庭上循环
【发布时间】:2021-06-25 15:26:32
【问题描述】:

我正在尽我最大的努力,但我不知道如何循环使用不同的法则,以找到最佳 glm 模型!

famille = paste0(fam,'(link=',sprintf(" '%s'",lien),')')
famille
[1] "poisson(link= 'log')"

我有两个变量 fam 和 Lien 我想在两个 fam(泊松和二项式)和两个链接(logit 和 log)上循环。

而且我不知道如何将变量famille 放入 glm 函数的参数族中。

我正在这样做

glm_model = glm(as.formula(paste(gar,"~."),family=famille,data=train)

我得到了这个错误:

get(family, mode = "function", envir = parent.frame()) 中的错误:
对象 'poisson(link= 'log')' de mode 'function' introuvable

希望你能帮帮我吗?

【问题讨论】:

  • 首先,您能解释一下为什么要对相同的数据同时使用泊松模型和 logit 模型吗?这是两种截然不同的模型,应该用于不同的目的
  • 好的,我需要运行大量 GLM 来检查保险公司对新数据的定价。因此,我需要循环我将提供的 GLM 的每个配置!
  • 我还是不明白。如果您试图预测的变量是价格,为什么要使用泊松和二项式 GLM?二项式 GLM(逻辑回归、概率、tobit 等)用于预测事件的类别 + 概率,泊松回归用于预测计数(即将发生的事件数、书中的拼写错误数等。 )
  • 我有两个模型用于价格(我将根据结果使用 gamma 或 gaussian(log))和频率(泊松和二项式负数(抱歉))。我也需要检查哪条法律最适合这两个模型

标签: r glm


【解决方案1】:

好吧,我想我从 cmets 那里得到了你想要的东西。这是我的做法:

df <- data.frame(
    y = 1:10,
    x = rnorm(10)
)

fam <- poisson
link <- 'log'

glm(y ~ x, data = df, family = fam(link = link))
#> 
#> Call:  glm(formula = y ~ x, family = fam(link = link), data = df)
#> 
#> Coefficients:
#> (Intercept)            x  
#>      1.6723      -0.1973  
#> 
#> Degrees of Freedom: 9 Total (i.e. Null);  8 Residual
#> Null Deviance:       16.64 
#> Residual Deviance: 13.98     AIC: 51.94

由reprex package (v1.0.0) 于 2021-04-01 创建

不需要任何花哨的东西。然后,您可以根据需要交换函数(族)和链接函数('log'、'logit' 等)

【讨论】:

    猜你喜欢
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 2015-10-01
    • 2014-05-25
    相关资源
    最近更新 更多