簡體   English   中英

從模型中提取模型信息,保存為r中的列表列

[英]extract model info from model saved as list column in r

我正在嘗試從列表列中的模型中提取模型信息。 使用mtcars來說明我的問題:

mtcars %>%  
    nest(-cyl) %>% 
    mutate(model= map(data, ~lm(mpg~wt, data=.))) %>% 
    mutate(aic=AIC(model))

我得到的是錯誤信息:

Error in mutate_impl(.data, dots) : 
  Evaluation error: no applicable method for 'logLik' applied to an object of class "list".

但是,當我這樣做時,它的工作原理。

mtcars %>%  
    group_by(cyl) %>% 
    do(model= lm(mpg~wt, data=.)) %>% 
    mutate(aic=AIC(model))

有誰能解釋為什么? 為什么第二種方式有效? 我無法理解。 在這兩種情況下,列表列“模型”都包含模型信息。 但可能存在一些差異......非常感謝。

讓我們比較這兩種方法之間的差異。 除了最后一次AIC調用之外,我們還可以運行您的整個代碼,並將結果保存到ab

a <- mtcars %>%  
  nest(-cyl) %>% 
  mutate(model= map(data, ~lm(mpg~wt, data=.))) 

b <- mtcars %>%  
  group_by(cyl) %>% 
  do(model= lm(mpg~wt, data=.)) 

現在我們可以在控制台中打印結果。

a
# A tibble: 3 x 3
    cyl               data    model
  <dbl>             <list>   <list>
1     6  <tibble [7 x 10]> <S3: lm>
2     4 <tibble [11 x 10]> <S3: lm>
3     8 <tibble [14 x 10]> <S3: lm>

b
Source: local data frame [3 x 2]
Groups: <by row>

# A tibble: 3 x 2
    cyl    model
* <dbl>   <list>
1     4 <S3: lm>
2     6 <S3: lm>
3     8 <S3: lm>

現在我們可以看到數據框b按行分組,而數據框a則不是。 這是關鍵。

要在數據幀a提取AIC,我們可以使用rowwise函數按每行對數據幀進行分組。

mtcars %>%  
  nest(-cyl) %>% 
  mutate(model= map(data, ~lm(mpg~wt, data=.))) %>%
  rowwise() %>%
  mutate(aic=AIC(model))

Source: local data frame [3 x 4]
Groups: <by row>

# A tibble: 3 x 4
    cyl               data    model      aic
  <dbl>             <list>   <list>    <dbl>
1     6  <tibble [7 x 10]> <S3: lm> 25.65036
2     4 <tibble [11 x 10]> <S3: lm> 61.48974
3     8 <tibble [14 x 10]> <S3: lm> 63.31555

或者我們可以使用map_dbl函數,因為我們知道每個AIC都是數字。

mtcars %>%  
  nest(-cyl) %>% 
  mutate(model= map(data, ~lm(mpg~wt, data=.))) %>%
  mutate(aic = map_dbl(model, AIC))

# A tibble: 3 x 4
    cyl               data    model      aic
  <dbl>             <list>   <list>    <dbl>
1     6  <tibble [7 x 10]> <S3: lm> 25.65036
2     4 <tibble [11 x 10]> <S3: lm> 61.48974
3     8 <tibble [14 x 10]> <S3: lm> 63.31555

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM