Resuelvo un problema de optimización simple. El conjunto de datos tiene 26 columnas y más de 3000 filas. El código fuente se pareceR resolver: el sistema es exactamente singular
Means <- colMeans(Returns)
Sigma <- cov(Returns)
invSigma1 <- solve(Sigma)
Y todo funciona perfecto, pero entonces yo quiero hacer lo mismo para el período más corto (sólo 261 filas) y la función de resolver escribe el siguiente error:
solve(Sigma)
Error in solve.default(Sigma) :
Lapack routine dgesv: system is exactly singular
su raro porque cuando lo haga lo mismo con algunos números aleatorios:
Returns<-matrix(runif(6786,-1,1), nrow=261)
Means <- colMeans(Returns)
Sigma <- cov(Returns)
invSigma <- solve(Sigma)
se produce ningún error en absoluto. ¿Podría alguien explicarme dónde podría estar el problema y cómo tratarlo? Muchas gracias, Alex
El conjunto de datos contiene devoluciones diarias de 26 devoluciones de activos, debe ser invertible, ¿no? Estoy confundido por qué no hay ningún problema cuando tengo todo el conjunto de datos, mientras que acortar produce un error. ¿Alguna idea de cómo lidiar con eso? – Alex
@Alex Check 'det (Sigma)': Si es cero, entonces es imposible invertirlo. – James
De hecho, es 0. ¿Cuál es el problema cuando acorto el conjunto de datos? – Alex