7 votos

Acelerar el sombrero de matrices como $X(X'X)^{-1}X'$ (matrices de proyección) y otros aspectos de la costumbre-construido estimador cuando el software se ejecuta fuera de la memoria

Es allí una manera de acelerar $Z(Z'Z)^{-1}Z'$ tipo de matrices? Yo soy la aplicación de la siguiente expresión directamente a través de una matriz de lenguaje y mi programa se bloquea con frecuencia, mientras que si se me OLS en ellos, utilizando un pre-fabricados de comandos, no es un problema.

Hay una sugerencia de ustedes podría tener que calcular las matrices de manera eficiente?

El objetivo aquí (pero eso es un tema aparte) es implementar el siguiente estimador de \begin{eqnarray} (X' P X - \sum_{i=1}^{n} P_{ii} X_{i}X_{i}' - \alpha X'X)^{-1} (X' P_Z y - \sum_{i=1}^{n} P_{ii} X_{i} y_{i} - \alpha X' y) \end{eqnarray} Ahora, $\alpha$ es el menor autovalor de a $(\overline{X}'\overline{X})^{-1} (\overline{X}' P_Z \overline{X} - \sum_{i=1}^{n} P_{ii} \overline{X}_{i} \overline{X}'_{i})$ donde $\overline{X} = [y,X]$.

Estoy bastante seguro de que una vez que he encontrado una manera eficiente para calcular las proyecciones, que fácilmente se puede implementar el resto fácilmente.

Muchas gracias!

6voto

AdamSane Puntos 1825

El uso de descomposición QR (que debería estar disponible si ya se ha calculado la regresión):

Deje $X$ ha $n$ filas y $p$ columnas y ser de columna completa en la clasificación.

$H=X(X'X)^{-1}X'$

$=QR(R'Q'QR)^{-1}R'Q'$

$=QR(R'R)^{-1}R'Q'$

Pero si $R_1$ es el primer $p$ filas de $R$ $R'R=R_1'R_1$

$=QR(R_1'R_1)^{-1}R'Q'$

Ahora vamos a $Q=(Q_1,Q_2)$ donde $Q_1$ es el primer $p$ columnas de $Q$. A continuación,$QR=Q_1R_1$.

$=Q_1R_1R_1^{-1}(R_1')^{-1}R_1'Q_1'$

$=Q_1Q_1'$

Donde$Q_1$$n\times p$.

Así que si tienes la descomposición QR de $X$, entonces el sombrero de la matriz es bastante simple.

Tenga en cuenta que algunos de regresión programas le darán $Q_1$ automáticamente. [Es posible también que una regresión programa se han realizado giros. Que no debería afectar al cálculo de la matriz hat sin embargo.]

3voto

roboknight Puntos 1

Trate de usar la enfermedad vesicular porcina. E. g., desde $$ X = U\Sigma V^T $$ entonces $$ (X^T X)^{-1} = (V\Sigma^2 V^T)^{-1} = V\Sigma^{-2} V^T $$ y así $$ X(X^T X)^{-1}X^T = U I_r U^T = U_r U_r^T $$ donde $I_r$ $n\times n$ matriz identidad con $r\leq n$ sobre la diagonal (parte superior), y $n-r$ ceros en la parte inferior de la diagonal, donde $r$ es el rango de $X$.

Esto probablemente va a acelerar su velocidad de cálculo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X