statsmodels.tsa.statespace.dynamic_factor_mq.DynamicFactorMQ.loading_constraints¶
-
DynamicFactorMQ.
loading_constraints
(i)[source]¶ Matrix formulation of quarterly variables’ factor loading constraints.
- Parameters
- i
int
Index of the endog variable to compute constraints for.
- i
- Returns
Notes
If the factors were known, then the factor loadings for the ith quarterly variable would be computed by a linear regression of the form
y_i = A_i’ f + B_i’ L1.f + C_i’ L2.f + D_i’ L3.f + E_i’ L4.f
where:
f is (k_i x 1) and collects all of the factors that load on y_i
L{j}.f is (k_i x 1) and collects the jth lag of each factor
A_i, …, E_i are (k_i x 1) and collect factor loadings
As the observed variable is quarterly while the factors are monthly, we want to restrict the estimated regression coefficients to be:
y_i = A_i f + 2 A_i L1.f + 3 A_i L2.f + 2 A_i L3.f + A_i L4.f
Stack the unconstrained coefficients: Lambda_i = [A_i’ B_i’ … E_i’]’
Then the constraints can be written as follows, for l = 1, …, k_i
2 A_{i,l} - B_{i,l} = 0
3 A_{i,l} - C_{i,l} = 0
2 A_{i,l} - D_{i,l} = 0
A_{i,l} - E_{i,l} = 0
So that k_constraints = 4 * k_i. In matrix form the constraints are:
\[R \Lambda_i = q\]where \(\Lambda_i\) is shaped (k_i * 5,), \(R\) is shaped (k_constraints, k_i * 5), and \(q\) is shaped (k_constraints,).
For example, for the case that k_i = 2, we can write:
2 0 -1 0 0 0 0 0 0 0 | | A_{i,1} | | 0 |0 2 0 -1 0 0 0 0 0 0 | | A_{i,2} | | 0 |3 0 0 0 -1 0 0 0 0 0 | | B_{i,1} | | 0 |0 3 0 0 0 -1 0 0 0 0 | | B_{i,2} | | 0 |2 0 0 0 0 0 -1 0 0 0 | | C_{i,1} | = | 0 |0 2 0 0 0 0 0 -1 0 0 | | C_{i,2} | | 0 |1 0 0 0 0 0 0 0 -1 0 | | D_{i,1} | | 0 |0 1 0 0 0 0 0 0 0 -1 | | D_{i,2} | | 0 | | E_{i,1} | | 0 | | E_{i,2} | | 0 |