Rozwiązuję prosty problem optymalizacji. Zbiór danych ma 26 kolumn i ponad 3000 wierszy. Kod źródłowy wyglądaR rozwiązać: system jest dokładnie pojedynczy
Means <- colMeans(Returns)
Sigma <- cov(Returns)
invSigma1 <- solve(Sigma)
I wszystko działa idealne-ale chcę zrobić to samo dla krótszego okresu (tylko 261 wierszy), a funkcja rozwiązać pisze się następujący błąd:
solve(Sigma)
Error in solve.default(Sigma) :
Lapack routine dgesv: system is exactly singular
To dziwne, ponieważ gdy robię to samo z pewnymi liczbami losowymi:
Returns<-matrix(runif(6786,-1,1), nrow=261)
Means <- colMeans(Returns)
Sigma <- cov(Returns)
invSigma <- solve(Sigma)
Brak błędu w ogóle. Czy ktoś mógłby mi wytłumaczyć, gdzie może być problem i jak go leczyć? Dziękuję bardzo, Alex
Zestaw danych zawiera codziennie zwroty 26 zwrotów aktywów, powinien być odwracalny, nie? Jestem zdezorientowany, dlaczego nie ma problemu, gdy mam cały zestaw danych, podczas gdy skrócenie powoduje błąd. Jakieś pomysły, jak sobie z tym poradzić? – Alex
@Alex Sprawdź 'det (Sigma)': Jeśli jest zero, to niemożliwe jest odwrócenie. – James
Rzeczywiście jest to 0. Jaki jest problem, gdy skracam zestaw danych? – Alex