Skip to contents

Displays a brief summary of selected fit statistics from the function fitstat.

Usage

# S3 method for fixest_fitstat
print(x, na.rm = FALSE, ...)

Arguments

x

An object resulting from the fitstat function.

na.rm

Logical, default is FALSE. If TRUE, the statistics that are missing are not displayed.

...

Not currently used.

Examples


data(trade)
gravity = feols(log(Euros) ~ log(dist_km) | Destination + Origin, trade)

# Extracting the 'working' number of observations used to compute the pvalues
fitstat(gravity, "g", simplify = TRUE)
#> [1] 15

# Some fit statistics
fitstat(gravity, ~ rmse + r2 + wald + wf)
#>                 RMSE: 2.26215
#>                   R2: 0.50428
#> Wald (joint nullity): stat =   272.9, p < 2.2e-16, on 1 and 38,309 DoF, VCOV: Clustered (Destination).
#>   F-test (projected): stat = 5,832.8, p < 2.2e-16, on 1 and 38,295 DoF.

# You can use them in etable
etable(gravity, fitstat = ~ rmse + r2 + wald + wf)
#>                                 gravity
#> Dependent Var.:              log(Euros)
#>                                        
#> log(dist_km)         -2.072*** (0.1254)
#> Fixed-Effects:       ------------------
#> Destination                         Yes
#> Origin                              Yes
#> ____________________ __________________
#> S.E.: Clustered         by: Destination
#> RMSE                             2.2622
#> R2                              0.50428
#> Wald (joint nullity)             272.90
#> F-test (projected)              5,832.8
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

# For wald and wf, you could show the pvalue instead:
etable(gravity, fitstat = ~ rmse + r2 + wald.p + wf.p)
#>                                          gravity
#> Dependent Var.:                       log(Euros)
#>                                                 
#> log(dist_km)                  -2.072*** (0.1254)
#> Fixed-Effects:                ------------------
#> Destination                                  Yes
#> Origin                                       Yes
#> _____________________________ __________________
#> S.E.: Clustered                  by: Destination
#> RMSE                                      2.2622
#> R2                                       0.50428
#> Wald (joint nullity), p-value           4.32e-61
#> F-test (projected), p-value             NaNe-Inf
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

# Now let's display some statistics that are not built-in
# => we use fitstat_register to create them

# We need: a) type name, b) the function to be applied
#          c) (optional) an alias

fitstat_register("tstand", function(x) tstat(x, se = "stand")[1], "t-stat (regular)")
fitstat_register("thc", function(x) tstat(x, se = "heter")[1], "t-stat (HC1)")
fitstat_register("t1w", function(x) tstat(x, se = "clus")[1], "t-stat (clustered)")
fitstat_register("t2w", function(x) tstat(x, se = "twow")[1], "t-stat (2-way)")

# Now we can use these keywords in fitstat:
etable(gravity, fitstat = ~ . + tstand + thc + t1w + t2w)
#>                               gravity
#> Dependent Var.:            log(Euros)
#>                                      
#> log(dist_km)       -2.072*** (0.1254)
#> Fixed-Effects:     ------------------
#> Destination                       Yes
#> Origin                            Yes
#> __________________ __________________
#> S.E.: Clustered       by: Destination
#> Observations                   38,325
#> R2                            0.50428
#> Within R2                     0.13218
#> t-stat (regular)              -76.373
#> t-stat (HC1)                  -80.129
#> t-stat (clustered)            -16.520
#> t-stat (2-way)                -13.268
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

# Note that the custom stats we created are can easily lead
# to errors, but that's another story!