Estou tentando separar dois grupos de valores de um único conjunto de dados. Eu posso assumir que uma das populações está normalmente distribuída e tem pelo menos metade do tamanho da amostra. Os valores do segundo são mais baixos ou mais altos que os valores do primeiro (a distribuição é desconhecida). O que estou tentando fazer é encontrar os limites superior e inferior que encerrariam a população normalmente distribuída da outra.
Minha suposição me fornece um ponto de partida:
- todos os pontos dentro da faixa interquartil da amostra são da população normalmente distribuída.
Estou tentando testar se os outliers os tiram do restante da amostra até que eles não se encaixem no 3º.dev da população normalmente distribuída. O que não é o ideal, mas parece produzir resultados razoáveis o suficiente.
Minha suposição é estatisticamente correta? Qual seria a melhor maneira de fazer isso?
ps por favor corrija as tags alguém.
fonte
Respostas:
Se bem entendi, você pode ajustar uma mistura de duas normais aos dados. Existem muitos pacotes R disponíveis para isso. Este exemplo usa o mixtools pacote:
Isto dá:
Mistura de duas normais http://img294.imageshack.us/img294/4213/kernal.jpg
O pacote também contém métodos mais sofisticados - verifique a documentação.
fonte
fonte
Isso pressupõe que você nem sabe se a segunda distribuição é normal ou não; Basicamente, manejo essa incerteza concentrando-me apenas na distribuição normal. Esta pode ou não ser a melhor abordagem.
Se você pode assumir que as duas populações estão completamente separadas (ou seja, todos os valores da distribuição A são menores que todos os valores da distribuição B), uma abordagem é usar a função optimize () em R para procurar o ponto de interrupção que gera estimativas da média e do dp da distribuição normal que tornam os dados mais prováveis:
Se você não pode assumir a separação completa, acho que terá que assumir alguma distribuição para a segunda distribuição e usar a modelagem de mistura. Observe que a modelagem da mistura não rotulará os pontos de dados individuais, mas fornecerá a proporção da mistura e as estimativas dos parâmetros de cada distribuição (por exemplo, média, sd, etc.).
fonte
optimize
requer que duas distribuições estejam lado a lado como eu entendo. No meu caso, um está dentro do outro, ou seja, os valores da segunda população estão nos dois lados dos limites.Estou surpreso que ninguém tenha sugerido a solução óbvia:
Agora, a explicação: a
ltsReg
função no pacoterobustbase
, quando chamada com a opçãoproduz os pesos univariados (exatos) do MCD. (esses são os pesos n-vetor 0-1 armazenados no
$raw.weights
objeto. O algoritmo para identificá-los é o estimador MCD (1)).fonte