Skip to content

Commit 353f3cd

Browse files
committed
Fixes
1 parent 020f359 commit 353f3cd

File tree

1 file changed

+32
-42
lines changed

1 file changed

+32
-42
lines changed

Diff for: src/HAC.jl

+32-42
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ struct QuadraticSpectralKernel{G <: BandwidthType} <: HAC{G}
4343
weights::Vector{Float64}
4444
end
4545

46-
struct VARHAC
46+
struct VARHAC
4747
imax::Int64
4848
ilag::Int64
4949
imodel::Int64
@@ -112,6 +112,26 @@ end
112112

113113
vcov(X::AbstractMatrix, k::VARHAC) = varhac(X, k.imax, k.ilag, k.imodel)
114114

115+
function vcov(X::AbstractMatrix, k::HAC{Fixed}; prewhite::Bool=true)
116+
D = I
117+
!prewhite || ((X, D) = pre_white(X))
118+
bw = k.bw[1]
119+
vcov(X, k, bw, D, prewhite)
120+
end
121+
122+
function vcov(X::AbstractMatrix, k::HAC{Optimal{T}}; prewhite::Bool=true) where T<:OptimalBandwidth
123+
p = size(X, 2)
124+
D = I
125+
!prewhite || ((X, D) = pre_white(X))
126+
if isempty(k.weights)
127+
for j in 1:p
128+
push!(k.weights, 1.0)
129+
end
130+
end
131+
bw = optimal_bw(X, k, T(), k.weights, prewhite)
132+
vcov(X, k, bw, D, prewhite)
133+
end
134+
115135
function vcov(X::AbstractMatrix, k::HAC, bw, D, prewhite::Bool)
116136
n, p = size(X)
117137
Q = zeros(p, p)
@@ -140,34 +160,8 @@ function vcov(X::AbstractMatrix, k::QuadraticSpectralKernel, bw, D, prewhite::Bo
140160
return scale!(Q, 1/n)
141161
end
142162

143-
function vcov(X::AbstractMatrix, k::HAC{Fixed}; prewhite::Bool=true)
144-
D = I
145-
!prewhite || ((X, D) = pre_white(X))
146-
bw = k.bw[1]
147-
vcov(X, k, bw, D, prewhite)
148-
end
149-
150-
function vcov(X::AbstractMatrix, k::HAC{Optimal{T}}; prewhite::Bool=true) where T<:Fixed
151-
p = size(X, 2)
152-
D = I
153-
!prewhite || ((X, D) = pre_white(X))
154-
#isempty(k.weights) && (k.weights = ones(p))
155-
bw = optimal_bw(X, k, T(), ones(p), prewhite)
156-
vcov(X, k, bw, D, prewhite)
157-
end
158-
159-
function vcov(X::AbstractMatrix, k::HAC{Optimal{T}}; prewhite::Bool=true) where T<:OptimalBandwidth
160-
p = size(X, 2)
161-
D = I
162-
!prewhite || ((X, D) = pre_white(X))
163-
if isempty(k.weights)
164-
for j in 1:p
165-
push!(k.weights, 1.0)
166-
end
167-
end
168-
bw = optimal_bw(X, k, T(), k.weights, prewhite)
169-
vcov(X, k, bw, D, prewhite)
170-
end
163+
vcov(r::DataFrameRegressionModel, k::HAC{T}; args...) where {T<:Fixed} = variance(r, k; args...)
164+
stderr(x::DataFrameRegressionModel, k::HAC; kwargs...) = sqrt.(diag(vcov(x, k; kwargs...)))
171165

172166
function vcov(r::DataFrameRegressionModel, k::HAC{Optimal{T}}; args...) where T<:OptimalBandwidth
173167
p = size(r.model.pp.X, 2)
@@ -178,22 +172,9 @@ function vcov(r::DataFrameRegressionModel, k::HAC{Optimal{T}}; args...) where T<
178172
push!(k.weights, 1.0)
179173
end
180174
end
181-
# w = ones(p)
182-
# "(Intercept)" ∈ coefnames(r.mf) && (w[find("(Intercept)" .== coefnames(r.mf))] = 0)
183-
# k.weights = w
184175
variance(r, k; args...)
185176
end
186177

187-
vcov(r::DataFrameRegressionModel, k::HAC{T}; args...) where {T<:Fixed} = variance(r, k; args...)
188-
189-
stderr(x::DataFrameRegressionModel, k::HAC; kwargs...) = sqrt.(diag(vcov(x, k; kwargs...)))
190-
191-
function variance(r::DataFrameRegressionModel, k::HAC; args...)
192-
B = meat(r, k; args...)
193-
A = bread(r, k)
194-
scale!(A*B*A, 1/nobs(r))
195-
end
196-
197178
function meat(r::DataFrameRegressionModel, k::HAC; args...)
198179
u = modelresiduals(r)
199180
X = modelmatrix(r)
@@ -206,6 +187,15 @@ function bread(r::DataFrameRegressionModel, k::HAC; arg...)
206187
scale!(A, nobs(r))
207188
end
208189

190+
function variance(r::DataFrameRegressionModel, k::HAC; args...)
191+
B = meat(r, k; args...)
192+
A = bread(r, k)
193+
scale!(A*B*A, 1/nobs(r))
194+
end
195+
196+
197+
198+
209199
##############################################################################
210200
##
211201
## Kernel functions

0 commit comments

Comments
 (0)