0

ここで説明されているように、ネストされたデータ フレーム内で回帰を実行しようとしています。私の目的では、多くのレベルの固定効果があるためfelm、パッケージから使用しています。lfe

上記のリンクの例を のfelm代わりに使用してやり直すlmと、 を使用するまではほとんどの場合機能しますbroom::augment

library(tidyverse)
library(broom)
library(gapminder)
library(lfe)

by_country <- gapminder %>% 
  group_by(continent, country) %>% 
  nest()

country_felm <- function(data){
  felm(lifeExp ~ year, data = data)
}

by_country <- by_country %>% 
    mutate(model = purrr::map(data, country_felm)
    )

コードの最後の行で数式の代わりに関数を使用する必要があったことを除いて、すべてがこの時点まで機能します。purrr::mapおそらく別のfelm癖です。

broomモデル出力を抽出するために使用しようとすると、glanceとでは機能しますが、 では機能しtidyませんaugment

by_country %>% unnest(model %>% purrr::map(broom::glance))
by_country %>% unnest(model %>% purrr::map(broom::tidy))
by_country %>% unnest(model %>% purrr::map(broom::augment))

使用しようとするaugmentと、次のエラー メッセージが表示されます。

Error in mutate_impl(.data, dots) : 
  argument must be coercible to non-negative integer
In addition: Warning message:
In seq_len(nrow(x)) : first element used of 'length.out' argument
4

1 に答える 1

1

通常、フィッティングに使用されるデータセットである引数augmentのデータを見つけるのに問題があるようです。data

一度にすべてのモデルを操作するよりも、これらのモデルの 1 つだけを操作した方が、問題を簡単に確認できます。

あなたの与えられたエラーで、これはうまくいきません:

augment(by_country$model[[1]])

ただし、データを引数に明示的に渡すと、次のようになりdataます。

augment(by_country$model[[1]], data = by_country$data[[1]])

したがって、回避策は、データセットをaugment2 番目の引数として渡すことです。これは、と列のpurrr:map2両方を同時にループすることで実行できます。modeldata

by_country %>%
    unnest(model %>% purrr::map2(., data, augment))
于 2017-03-07T19:16:13.130 に答える