WedX - журнал о программировании и компьютерных науках

не могу использовать emmeans внутри карты

Это работает:

testmodel=glm(breaks~wool,data=warpbreaks)
emmeans::emmeans(testmodel,"wool")

Это работает:

warpbreaks %>%
  group_by(tension) %>%
  do(models=glm(breaks~wool,data=.)) %>% 
  ungroup() %>%
  mutate(means=map(models,~emmeans::emmeans(.x,"wool")))

Это не так:

warpbreaks %>%
  group_by(tension) %>% nest() %>%
  mutate(models=map(data,~glm(breaks~wool,data=.x))) %>%
  mutate(means=map(models,~emmeans::emmeans(.x,"wool")))

Error in is.data.frame(data) : object '.x' not found
Error in mutate_impl(.data, dots) : 
  Evaluation error: Perhaps a 'data' or 'params' argument is needed.

Есть идеи, что вызывает это?

02.02.2018

Ответы:


1

Я понял. Проблема заключается в том, как emmeans пытается восстановить данные из объектов lm / glm: он пытается выполнить вызов, хранящийся в объекте, что терпит неудачу, если emmeans () вызывается в среде, отличной от исходного вызова glm ():

emmeans:::recover_data.lm

Вот простой пример:

wb=warpbreaks
model=glm(breaks~wool,data=wb)
emmeans(model,"wool")
rm(wb)
emmeans(model,"wool")

Вот способ заставить emmeans () работать с map ():

warpbreaks %>%
  group_by(tension) %>% nest() %>%
  mutate(models=map(data,~glm(breaks~wool,data=.x))) %>%
  mutate(means=map(models,~emmeans::emmeans(.x,"wool",data=.x$data)))

Кажется странным, что recovery_data () не просто автоматически использует атрибут данных объектов lm / glm, а вместо этого предполагает, что вызов будет работать в текущей среде ...

03.02.2018
  • В вызове не всегда присутствует атрибут данных, поэтому он не используется. 03.02.2018

  • 2

    Мы можем сделать это в два этапа

    df1 <- warpbreaks %>%
                group_by(tension) %>%
                nest() %>%
                mutate(models = map(data,~glm(breaks~wool,data=.x)))                          
    
    warpbreaks %>% 
          split(.$tension) %>% 
           map( ~glm(breaks ~ wool, data = .x) %>%
                    emmeans(., "wool")) %>%
           mutate(df1, Means = .) 
    
    # A tibble: 3 x 4
    #   tension data              models    Means        
    #  <fctr>  <list>            <list>    <list>       
    #1 L       <tibble [18 x 2]> <S3: glm> <S4: emmGrid>
    #2 M       <tibble [18 x 2]> <S3: glm> <S4: emmGrid>
    #3 H       <tibble [18 x 2]> <S3: glm> <S4: emmGrid>
    
    02.02.2018
  • Это ошибка в map (), которая вам нужна? Кажется непреодолимым / неэлегантным, что это потребовалось бы ... 02.02.2018
  • warpbreaks% ›% group_by (напряженность)%›% do (models = glm (ломает ~ шерсть, data =.))% ›% ungroup ()%›% mutate (stats = map (models, ~ emmeans :: emmeans (. х, шерсть))) тоже работает, значит что-то странное про карту и глм? 02.02.2018
  • @NicholasRoot Странно извлекать данные. $ В map 03.02.2018
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]