O que uma matriz de covariância definida não positiva me diz sobre meus dados?


21

Eu tenho várias observações multivariadas e gostaria de avaliar a densidade de probabilidade em todas as variáveis. Supõe-se que os dados sejam normalmente distribuídos. Em números baixos de variáveis, tudo funciona como eu esperaria, mas passar para números maiores resulta na matriz de covariância que se torna definida como não positiva.

Reduzi o problema no Matlab para:

load raw_data.mat; % matrix number-of-values x number of variables
Sigma = cov(data);
[R,err] = cholcov(Sigma, 0); % Test for pos-def done in mvnpdf.

Se errar> 0, o Sigma não é definitivo positivo.

Existe algo que eu possa fazer para avaliar meus dados experimentais em dimensões mais altas? Isso me diz algo útil sobre meus dados?

Sou um iniciante nessa área, então peço desculpas se perdi algo óbvio.


Parece que seus dados são muito escassos para as representações de alta dimensão. Você está planejando executar modelos de regressão com esses dados?
Jonathan Thiele

Respostas:


30

A matriz de covariância não é definida positivamente porque é singular. Isso significa que pelo menos uma de suas variáveis ​​pode ser expressa como uma combinação linear das outras. Você não precisa de todas as variáveis, pois o valor de pelo menos uma pode ser determinado a partir de um subconjunto das outras. Eu sugeriria adicionar variáveis ​​sequencialmente e verificar a matriz de covariância em cada etapa. Se uma nova variável cria uma singularidade, solte-a e vá para a próxima. Eventualmente, você deve ter um subconjunto de variáveis ​​com uma matriz de covariância definida positiva.


19
+1. Também é importante notar que todas as matrizes de covariância são definidas positivamente e todas as matrizes definidas positivas são a matriz de covariância de alguma distribuição multivariada. Portanto, dizer "matriz de covariância definida não positiva" é um pouco de oxímoro. Parece que o OP estava realmente dizendo apenas que a matriz de covariância da amostra era singular, o que pode acontecer exatamente da colinearidade (como você disse) ou quando o número de observações é menor que o número de variáveis .
Macro

3
Alguns softwares de estatísticas podem ser induzidos para corrigir esse problema automaticamente. Por exemplo, o regresscomando da Stata eliminará automaticamente variáveis ​​extras quando algumas forem colineares (e sua saída pode ser salva de uma forma que identifique essas variáveis ​​e marque um subconjunto não colinear para uso futuro). Uma complicação provável, no entanto, é que as variáveis ​​podem não ser necessariamente colineares, mas podem estar próximas o suficiente para que a propagação do erro de ponto flutuante na decomposição de Cholesky produza estimativas negativas de autovalores, tornando as variáveis ​​colineares para todos os fins práticos.
whuber

1
@whuber, também existe uma funcionalidade semelhante R- os modelos de regressão descartam automaticamente variáveis ​​do preditor linear se houver colinearidade exata.
Macro

2
@ Whuber, é um pouco hacky, mas você pode fazer um truque semelhante. Se gfor o seu modelo linear, colnames(model.matrix(g))[-which(is.na(coef(g))==TRUE)][-1]retorne os nomes dos preditores inseridos no modelo que não são exatamente colineares. Isso funciona verificando quais coeficientes foram NA(é assim que Rindica que uma variável foi descartada) e localizando os nomes das colunas correspondentes da matriz do modelo (excluindo a coluna de interceptação). By the way, que não vai funcionar se não houver termos colineares assim uma instrução if para verificar se which(is.na(coef(g))==TRUE)não está vazio é necessária :)
Macro

8
@ Macro Todas as matrizes de covariância são semi-definidas positivas. Quando eles são singulares, não são definidos positivamente porque x'Ax> 0 para todos os vetores x para a matriz A seja definido positivamente. No caso singular, ocorre x'Ax = 0 para alguns x.
Michael R. Chernick

0

É um resultado válido. A estimativa para esse componente da matriz de covariância é zero, o que pode muito bem ser verdade! Isso pode levar a dificuldades de computação, mas alguns algoritmos em R (eu não sei sobre o Matlab) podem lidar com isso. Não entendo por que as pessoas ficam chateadas com isso e insistem em montar modelos mais parcimoniosos.


-1

Um ponto que acho que não foi abordado acima é que é possível calcular uma matriz de covariância definida não positiva a partir de dados empíricos, mesmo que suas variáveis ​​não estejam perfeitamente relacionadas linearmente. Se você não tiver dados suficientes (principalmente se estiver tentando construir uma matriz de covariância de alta dimensão a partir de várias comparações pareadas) ou se seus dados não seguirem uma distribuição normal multivariada, poderá acabar com relacionamentos paradoxais entre variáveis, como cov (A, B)> 0; cov (A, C)> 0; cov (B, C) <0.

Nesse caso, não é possível ajustar um PDF normal multivariado, pois não há distribuição normal multivariada que atenda a esses critérios - cov (A, B)> 0 e cov (A, C)> 0 necessariamente implica que cov (B, C )> 0.

Tudo isso é para dizer que uma matriz definida não positiva nem sempre significa que você está incluindo variáveis ​​colineares. Também pode sugerir que você esteja tentando modelar um relacionamento que é impossível, dada a estrutura paramétrica que você escolheu.


1
Sua resposta está errada em muitos níveis. De qualquer forma, considere uma matriz de covariância com 1 na diagonal e 1/2 para cov (1º e 2º componentes), 1/2 para cov (1º e 3º componentes) e -1/2 para cov (2º e 3º componentes) . A matriz de covariância possui valores próprios de aproximadamente 0,15, 1,35, 1,50, fornecendo um contra-exemplo à afirmação no seu segundo parágrafo.
Mark L. Stone

@ MarkL.Stone, você está certo sobre o segundo parágrafo, mas gostaria de saber se algo disso é ambíguo e poderia ser salvo sob uma interpretação generosa. Por exemplo, pergunto-me se, no parágrafo 1, "não há dados suficientes ... tentar construir uma matriz de covariância de alta dimensão a partir de várias comparações aos pares" refere-se a muitos dados ausentes e a usar as observações completas aos pares para calcular cada elemento na matriz de covariância.
gung - Restabelece Monica
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.