@@ -43,7 +43,7 @@ struct QuadraticSpectralKernel{G <: BandwidthType} <: HAC{G}
43
43
weights:: Vector{Float64}
44
44
end
45
45
46
- struct VARHAC
46
+ struct VARHAC
47
47
imax:: Int64
48
48
ilag:: Int64
49
49
imodel:: Int64
112
112
113
113
vcov (X:: AbstractMatrix , k:: VARHAC ) = varhac (X, k. imax, k. ilag, k. imodel)
114
114
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
+
115
135
function vcov (X:: AbstractMatrix , k:: HAC , bw, D, prewhite:: Bool )
116
136
n, p = size (X)
117
137
Q = zeros (p, p)
@@ -140,34 +160,8 @@ function vcov(X::AbstractMatrix, k::QuadraticSpectralKernel, bw, D, prewhite::Bo
140
160
return scale! (Q, 1 / n)
141
161
end
142
162
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... )))
171
165
172
166
function vcov (r:: DataFrameRegressionModel , k:: HAC{Optimal{T}} ; args... ) where T<: OptimalBandwidth
173
167
p = size (r. model. pp. X, 2 )
@@ -178,22 +172,9 @@ function vcov(r::DataFrameRegressionModel, k::HAC{Optimal{T}}; args...) where T<
178
172
push! (k. weights, 1.0 )
179
173
end
180
174
end
181
- # w = ones(p)
182
- # "(Intercept)" ∈ coefnames(r.mf) && (w[find("(Intercept)" .== coefnames(r.mf))] = 0)
183
- # k.weights = w
184
175
variance (r, k; args... )
185
176
end
186
177
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
-
197
178
function meat (r:: DataFrameRegressionModel , k:: HAC ; args... )
198
179
u = modelresiduals (r)
199
180
X = modelmatrix (r)
@@ -206,6 +187,15 @@ function bread(r::DataFrameRegressionModel, k::HAC; arg...)
206
187
scale! (A, nobs (r))
207
188
end
208
189
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
+
209
199
# #############################################################################
210
200
# #
211
201
# # Kernel functions
0 commit comments