Skip to content

Commit 2662649

Browse files
Correct p-values and CI with clustered SE (#202)
* Update fit.jl * Update FixedEffectModel.jl * Update Project.toml * Update FixedEffectModel.jl
1 parent 2647eb6 commit 2662649

File tree

3 files changed

+6
-5
lines changed

3 files changed

+6
-5
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "FixedEffectModels"
22
uuid = "9d5cd8c9-2029-5cab-9928-427838db53e3"
3-
version = "1.6.6"
3+
version = "1.6.7"
44

55
[deps]
66
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"

src/FixedEffectModel.jl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ struct FixedEffectModel <: RegressionModel
2525

2626
nobs::Int64 # Number of observations
2727
dof_residual::Int64 # nobs - degrees of freedoms
28+
df_FStat::Int64
2829

2930
rss::Float64 # Sum of squared residuals
3031
tss::Float64 # Total sum of squares
@@ -65,7 +66,7 @@ StatsBase.mss(m::FixedEffectModel) = deviance(m) - rss(m)
6566

6667

6768
function StatsBase.confint(m::FixedEffectModel; level::Real = 0.95)
68-
scale = tdistinvcdf(dof_residual(m), 1 - (1 - level) / 2)
69+
scale = tdistinvcdf(m.df_FStat, 1 - (1 - level) / 2)
6970
se = stderror(m)
7071
hcat(m.coef - scale * se, m.coef + scale * se)
7172
end
@@ -154,7 +155,7 @@ function StatsBase.coeftable(m::FixedEffectModel; level = 0.95)
154155
end
155156
tt = cc ./ se
156157
CoefTable(
157-
hcat(cc, se, tt, fdistccdf.(Ref(1), Ref(dof_residual(m)), abs2.(tt)), conf_int[:, 1:2]),
158+
hcat(cc, se, tt, fdistccdf.(Ref(1), Ref(m.df_FStat), abs2.(tt)), conf_int[:, 1:2]),
158159
["Estimate","Std.Error","t value", "Pr(>|t|)", "Lower 95%", "Upper 95%" ],
159160
["$(coefnms[i])" for i = 1:length(cc)], 4)
160161
end
@@ -224,7 +225,7 @@ function Base.show(io::IO, m::FixedEffectModel)
224225
coefnms = coefnms[newindex]
225226
end
226227
tt = cc ./ se
227-
mat = hcat(cc, se, tt, fdistccdf.(Ref(1), Ref(dof_residual(m)), abs2.(tt)), conf_int[:, 1:2])
228+
mat = hcat(cc, se, tt, fdistccdf.(Ref(1), Ref(m.df_FStat), abs2.(tt)), conf_int[:, 1:2])
228229
nr, nc = size(mat)
229230
colnms = ["Estimate","Std.Error","t value", "Pr(>|t|)", "Lower 95%", "Upper 95%"]
230231
rownms = ["$(coefnms[i])" for i = 1:length(cc)]

src/fit.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,5 +449,5 @@ function reg(
449449
esample = trues(N)
450450
end
451451

452-
return FixedEffectModel(coef, matrix_vcov, vcov, nclusters, esample, residuals2, augmentdf, fekeys, coef_names, response_name, formula_origin, formula_schema, contrasts, nobs, dof_residual_, rss, tss_total, r2, adjr2, F, p, iterations, converged, r2_within, F_kp, p_kp)
452+
return FixedEffectModel(coef, matrix_vcov, vcov, nclusters, esample, residuals2, augmentdf, fekeys, coef_names, response_name, formula_origin, formula_schema, contrasts, nobs, dof_residual_, df_FStat_, rss, tss_total, r2, adjr2, F, p, iterations, converged, r2_within, F_kp, p_kp)
453453
end

0 commit comments

Comments
 (0)