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
. IfTRUE
, 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!