首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增加:评估错误:对象不是用gamlss找到的,而是所有的都用lm找到的。

增加:评估错误:对象不是用gamlss找到的,而是所有的都用lm找到的。
EN

Stack Overflow用户
提问于 2018-03-06 00:24:28
回答 1查看 351关注 0票数 0

我正在努力将gamlss结果收集到一个数据框架中。这将继续示例here

使用lm工作示例

代码语言:javascript
复制
library(tidyverse)
library(broom)
library(gamlss)

library(datasets)

# working
mro <- mtcars %>% 
  nest(-am) %>% 
  mutate(am = factor(am, levels = c(0, 1), labels = c("automatic", "manual")),
         fit = map(data, ~lm(mpg ~ hp + wt + disp, data = .)),
         results = map(fit, augment))

使用gamlss的断例

代码语言:javascript
复制
# GAMLSS model.frame workaround for dplyr
# See https://stackoverflow.com/q/48979322/152860 
model.frame.gamlss <- function(formula, what = c("mu", "sigma", "nu", "tau"), parameter = NULL, ...) {
    object <- formula
    dots <- list(...)
    what <- if (!is.null(parameter)) {
        match.arg(parameter, choices = c("mu", "sigma", "nu", "tau"))
    } else match.arg(what)
    Call <- object$call
    parform <- formula(object, what)
    data <- if (!is.null(Call$data)) {
        ## problem here, as Call$data is .
        #eval(Call$data)
        # instead, this would work:
        eval(Call$data, environment(formula$mu.terms))
    } else {
        environment(formula$terms)
    }
    Terms <- terms(parform)
    mf <- model.frame(
        Terms, 
        data, 
        xlev = object[[paste(what, "xlevels", sep = ".")]]
    )
    mf
}

# broken
mro <- mtcars %>% 
  nest(-am) %>% 
  mutate(am = factor(am, levels = c(0, 1), labels = c("automatic", "manual")),
         fit = map(data, ~gamlss(mpg ~ hp + wt + disp, data = .)),
         results = map(fit, augment))

感谢任何提示或提示。

EN

回答 1

Stack Overflow用户

发布于 2018-03-06 03:52:45

到目前为止,这是我发现的最优雅的方法(试错)。很高兴被纠正。

代码语言:javascript
复制
aug_func <- function(df){
          augment(gamlss(mpg ~ hp + wt + disp, data=df))
        }
mtcars %>% 
  mutate(am = factor(am, levels = c(0, 1), labels = c("automatic", "manual"))) %>%
  group_by(am) %>%
  do(aug_func(df=.)) %>%
    ggplot(aes(x = mpg, y = .fitted)) +
      geom_abline(intercept = 0, slope = 1, alpha = .2) +  # Line of perfect fit
      geom_point() +
      facet_grid(am ~ .) +
      labs(x = "Miles Per Gallon", y = "Predicted Value") +
      theme_bw()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49121584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档