Que las columnas de $X$ sea $X_1,X_2,\ldots, X_n$ las entradas correspondientes de $A$ sea $a_1, a_2, \ldots, a_n$ las columnas de $Y$ sea $Y_1, Y_2, \ldots, Y_n$ y las columnas de error son $e_1, e_2, \ldots, e_n$ .
Observe que
$$e_i = Y_i - a_i X_i.$$
Cada parámetro $a_i$ sólo interviene en una de estas expresiones. Por lo tanto, la suma de los cuadrados de las $e_i$ igual a $\sum_{i=1}^n |e_i|^2$ puede minimizarse hallando por separado y de forma independiente $a_i$ que minimicen las normas al cuadrado $|e_i|^2 = e_i^\prime e_i$ . Es un conjunto de $n$ problemas de regresión (univariante) a través del origen. Sin restricciones en el $a_i$ las soluciones serían
$$\hat a_i = \frac{Y_i^\prime X_i}{X_i^\prime X_i}.$$
Si alguno de los $\hat a_i$ queda fuera del intervalo de restricción $[0,1]$ la convexidad de la función objetivo demuestra que sólo es necesario examinar sus valores en la frontera $\partial[0,1]=\{0,1\}$ . Un planteamiento sencillo es una búsqueda exhaustiva de ambos puntos: es decir, comparar los valores de $|Y_i - X_i|^2$ y $|Y_i|^2$ , eligiendo $\hat a_i = 1$ cuando el primero es más pequeño y $\hat a_i=0$ de lo contrario.
He aquí dos ejemplos con $m=100$ filas y $n=5$ columnas. Se generaron creando el $X$ y $A$ matrices al azar y añadiéndoles errores aleatorios para obtener $Y$ . Siempre que las entradas en $A$ se encuentran en el intervalo $[0,1]$ los valores estimados deberían aproximarse a los originales (dependiendo de la magnitud de los errores aleatorios). El gráfico de la izquierda de cada ejemplo es un gráfico de puntos de la estimación $\hat a_i$ y el valor original del parámetro $a_i$ lo que permite comparar visualmente las estimaciones con los parámetros. El gráfico de la derecha de cada ejemplo es un diagrama de dispersión de los residuos de este ajuste (los $\hat e_i$ ) frente a los errores originales. Cuando no se aplican las restricciones (como en la fila inferior), este diagrama de dispersión debería estar muy centrado en la línea de igualdad. Cuando se aplican restricciones (fila superior), habrá más dispersión (aportada por las columnas correspondientes).
En R
para producir esta figura le permitirá experimentar con valores arbitrarios de $m$ y $n$ . La estimación de $A$ consta de cuatro líneas exactamente paralelas al análisis: cálculo del coeficiente de regresión, de los dos valores en la frontera y las comparaciones necesarias para seleccionar el mejor. Es rápido y paralelizable: aparte del paso de trazado, se ejecutará en segundos incluso cuando $n$ es de millones ( $10^6$ ).
m <- 100
n <- 5
par(mfrow=c(2,2))
for (i in c(23, 19)) {
#
# Generate data.
#
set.seed(i)
x <- matrix(rnorm(m*n), m)
alpha <- rnorm(n, 1/2, 1/2)
eps <- matrix(rnorm(m*n, 0, 1/4), m)
y <- t(t(x) * alpha) + eps
#
# Compute A.
#
a <- colSums(x*y) / colSums(x*x)
a.0 <- colSums(y*y)
a.1 <- colSums((y-x)*(y-x))
a <- ifelse(0 <= a & a <= 1, a, ifelse(a.0 <= a.1, 0, 1))
#
# Plot results.
#
e <- y - x %*% diag(a)
u <- rbind(Parameter=alpha, Estimate=a)
dotchart(u, col=ifelse(abs(u-1/2)>1/2, "Red", "Blue"), cex=0.6, pch=20,
xlab="Parameter value")
plot(as.vector(eps), as.vector(e), asp=1, col="#00000040",
xlab="Error", ylab="Residual")
}
0 votos
@Firebug. Gracias. He editado la pregunta para añadir la restricción de que los valores de la matriz diagonal deben estar entre 0 y 1. ¿Podrías decirme cuál es el planteamiento \solution para la matriz diagonal sería?