Коэффициент наклона / перехвата с Пурром в R - PullRequest
1 голос
/ 19 февраля 2020

Я хочу напечатать односторонний вид для соотношения между уклоном и пересечением.

пока у меня есть:

mtcars %>% split(.$cyl) %>% 
  map(~lm(mpg~wt, data =.)) %>% 
  map(coefficients) %>% map_dbl("(Intercept)")

mtcars %>% split(.$cyl) %>% 
  map(~lm(mpg~wt, data =.)) %>% 
  map(coefficients) %>% map_dbl("wt")

Это работает и печатает перехват и наклон по мере необходимости, но я не могу делать какие-либо расчеты на любом из них.

I Я пробовал следующее, чтобы получить соотношение между ними.

mtcars %>% split(.$cyl) %>% 
  map(~lm(mpg~wt, data =.)) %>% 
  map(coefficients) %>% map_dbl("wt")/map_dbl("(Intercept)")

mtcars %>% split(.$cyl) %>% 
  map(~lm(mpg~wt, data =.)) %>% 
  map(coefficients) %>% map_dbl("wt"/"(Intercept)")

mtcars %>% split(.$cyl) %>% 
  map(~lm(mpg~wt, data =.)) %>% 
  map(coefficients) %>% map_dbl(map_dbl("wt")/map_dbl("(Intercept)"))

Любая помощь приветствуется, спасибо.

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Другой путь без мурлыкания, но с метлой:

library(broom)
library(dplyr)

mtcars %>% group_by(cyl) %>% 
do(tidy(lm(mpg~wt, data =.))) %>% 
summarize(ratio=estimate[2]/estimate[1])
# A tibble: 3 x 2
    cyl   ratio
  <dbl>   <dbl>
1     4 -0.143 
2     6 -0.0979
3     8 -0.0919
1 голос
/ 19 февраля 2020

подмножество текущего элемента . / .x, используя имена, затем создайте формулу деления, используя ~

mtcars %>% split(.$cyl) %>% 
  map(~lm(mpg~wt, data =.)) %>% 
  map_dbl(~.[["coefficients"]][["wt"]]/.[["coefficients"]][["(Intercept)"]]) #%>%
  #enframe(name = "cyl", value = "ratio") #produces output as a data.frame

          4           6           8 
-0.14270545 -0.09786058 -0.09185668 

, чтобы ваш подход работал, мы можем использовать {}

mtcars %>% split(.$cyl) %>% 
  map(~lm(mpg~wt, data =.)) %>% 
  map(coefficients) %>% {map_dbl(.,"wt")/map_dbl(.,"(Intercept)")}
...