Extrair valores do output do Summary

Olá pessoal, tudo joia? :grinning:
Gostaria de extrair os valores de (‘Estimate’, ‘std. Error’, ‘Pr(>|z|)’) dos resultados do output e coloca-los em um formato de tabela. Como posso fazer isso com o exemplo abaixo? :roll_eyes:

require(GJRM)
set.seed(123)
x1 <- sample(1:100, size = 20)
bid1 <- sample(c(5, 10, 20, 30), size = 20, replace = T)
bid2 <- sample(c(5, 10, 20, 30), size = 20, replace = T)
ans1 <- sample(c(1,0), size = 20, replace = T)
ans2 <- sample(c(1,0), size = 20, replace = T)
df <- cbind(x1, bid1, bid2, ans1, ans2)
df <- as.data.frame(df)
treat.eq <- ans1 ~ bid1 + x1
out.eq <- ans2 ~ bid2 + x1
f.list <- list(treat.eq, out.eq)
mr <- c("probit", "probit")

Regressão e summary

bvp <- gjrm(f.list, data=df, Model="B", margins= mr)
summary(bvp)

Oi Claudiano, tudo bem?

A primeira coisa que pensei foi no pacote broom, você conhece?


A função broom::tidy() recebe como argumento algum resultado de teste estatístico e resulta em uma tabela.

Nesse caso que você apresentou, me parece que o objeto final tem uma classe que o broom não aceita:

broom::tidy(bvp)
Erro: No tidy method for objects of class SemiParBIV

Outra forma de obter esse valor é através de listas… Salvando o resultado do summary em um objeto, você pode verificar que esse resultado é uma lista, e você pode navegar na mesma usando colchetes e cifrão. No exemplo abaixo converti a parte necessária em uma tibble, assim fica mais fácil acessar os valores posteriormente.
Exemplo:

require(GJRM)
#> Carregando pacotes exigidos: GJRM
#> Carregando pacotes exigidos: mgcv
#> Carregando pacotes exigidos: nlme
#> This is mgcv 1.8-34. For overview type 'help("mgcv-package")'.
#> 
#> This is GJRM 0.2-3.
#> For overview type 'help("GJRM-package")'.
set.seed(123)
x1 <- sample(1:100, size = 20)
bid1 <- sample(c(5, 10, 20, 30), size = 20, replace = T)
bid2 <- sample(c(5, 10, 20, 30), size = 20, replace = T)
ans1 <- sample(c(1,0), size = 20, replace = T)
ans2 <- sample(c(1,0), size = 20, replace = T)
df <- cbind(x1, bid1, bid2, ans1, ans2)
df <- as.data.frame(df)
treat.eq <- ans1 ~ bid1 + x1
out.eq <- ans2 ~ bid2 + x1
f.list <- list(treat.eq, out.eq)
mr <- c("probit", "probit")
#Regressão e summary
bvp <- gjrm(f.list, data=df, Model="B", margins= mr)

# TERMINA AQUI O CÓDIGO DO CLAUDIANO
# Carregar o pipe
library(magrittr, include.only = "%>%")
# Salvar o resultado do summary em um objeto
lista_summary <- summary(bvp)

# ver a classe desse objeto
class(lista_summary)
#> [1] "summary.SemiParBIV"

# Exemplo para a tabela da Equation 1

tabela_eq_1 <- lista_summary$tableP1  # estamos trabalhando com listas, salvar o que queremos usar em outro objeto para facilitar

tabela_eq_1 %>% 
  as.data.frame() %>%  # transformar em data frame
  tibble::rownames_to_column("value") %>%  # adicionar o nome das linhas como uma nova coluna
  tibble::as_tibble() # agora sim transformar em tibble
#> # A tibble: 3 x 5
#>   value       Estimate `Std. Error` `z value` `Pr(>|z|)`
#>   <chr>          <dbl>        <dbl>     <dbl>      <dbl>
#> 1 (Intercept)   0.838       0.798        1.05      0.294
#> 2 bid1         -0.0468      0.0314      -1.49      0.136
#> 3 x1           -0.0107      0.00994     -1.07      0.284

Created on 2021-03-27 by the reprex package (v1.0.0)

Com a tibble ao final, fica mais fácil acessar os valores. Caso você tenha dúvidas nessa parte, responde aqui novamente! Abraços

1 Curtida

Beatriz, você não existe rs…! Muito obrigado pela presença sempre gentil e generosa em ensinar. Abraçao!