Identificação de outliers para regressão não linear

11

Estou fazendo pesquisas no campo da resposta funcional dos ácaros. Gostaria de fazer uma regressão para estimar os parâmetros (taxa de ataque e tempo de manipulação) da função Rogers tipo II. Eu tenho um conjunto de dados de medidas. Como posso determinar melhor os valores discrepantes?

Para minha regressão, uso o seguinte script em R (uma regressão não linear): (o conjunto de datas é um arquivo de texto simples de 2 colunas chamado data.txtarquivo com N0valores (número de presas iniciais) e FRvalores (número de presas comidas durante 24 horas):

library("nlstools")
dat <- read.delim("C:/data.txt")    
#Rogers type II model
a <- c(0,50)
b <- c(0,40)
plot(FR~N0,main="Rogers II normaal",xlim=a,ylim=b,xlab="N0",ylab="FR")
rogers.predII <- function(N0,a,h,T) {N0 - lambertW(a*h*N0*exp(-a*(T-h*N0)))/(a*h)}
params1 <- list(attackR3_N=0.04,Th3_N=1.46)
RogersII_N <-  nls(FR~rogers.predII(N0,attackR3_N,Th3_N,T=24),start=params1,data=dat,control=list(maxiter=    10000))
hatRIIN <- predict(RogersII_N)
lines(spline(N0,hatRIIN))
summary(RogersII_N)$parameters

Para plotar os gráficos de resíduos calsésicos, utilizo o seguinte script:

res <- nlsResiduals (RogersII_N)
plot (res, type = 0)
hist (res$resi1,main="histogram residuals")
    qqnorm (res$resi1,main="QQ residuals")
hist (res$resi2,main="histogram normalised residuals")
    qqnorm (res$resi2,main="QQ normalised residuals")
par(mfrow=c(1,1))
boxplot (res$resi1,main="boxplot residuals")
    boxplot (res$resi2,main="boxplot normalised residuals")

Questões

  • Como posso determinar melhor quais pontos de dados são discrepantes?
  • Existem testes que eu possa usar no R que sejam objetivos e me mostrem quais pontos de dados são discrepantes?
Joachim
fonte

Respostas:

9

Vários testes para outliers, incluindo Dixon e Grubb, estão disponíveis no outlierspacote em R. Para obter uma lista dos testes, consulte a documentação do pacote. As referências que descrevem os testes são fornecidas nas páginas de ajuda para as funções correspondentes.

Caso você planeje remover os valores discrepantes de seus dados, lembre-se de que isso nem sempre é aconselhável. Veja, por exemplo, esta pergunta para uma discussão sobre isso (bem como mais algumas sugestões sobre como detectar discrepâncias).

MånsT
fonte
8

Também não sou estatístico. Portanto, eu uso meu conhecimento especializado sobre os dados para encontrar discrepâncias. Ou seja, procuro razões físicas / biológicas / quaisquer que tenham feito algumas medições diferentes das outras.

No meu caso, isto é, por exemplo

  • raios cósmicos atrapalhando parte do sinal medido
  • alguém entrando no laboratório, acendendo a luz
  • apenas todo o espectro de alguma forma parece diferente
  • a primeira série de medições foi realizada durante o horário normal de trabalho e é uma ordem de ampliação mais barulhenta que a série das 22 horas

Certamente você poderia nos dizer efeitos semelhantes.

Note que meu terceiro ponto é diferente dos outros: não sei o que aconteceu. Esse pode ser o tipo de discrepância que você está perguntando. No entanto, sem saber o que a causou (e que essa causa invalida o ponto de dados), é difícil dizer que não deve aparecer no conjunto de dados. Além disso: o seu outlier pode ser a minha amostra mais interessante ...

Portanto, muitas vezes não falo de valores extremos, mas de pontos de dados suspeitos. Isso lembra a todos que eles precisam ser verificados duas vezes quanto ao seu significado.

Se é bom ou não excluir dados (quem deseja encontrar valores discrepantes apenas para obtê-los?) Depende muito de qual é a tarefa em questão e quais são as "condições de contorno" para essa tarefa. Alguns exemplos:

  • você acabou de descobrir a nova subespécie Outlierensis Joachimii ;-) não há razão para excluí-las. Excluir todos os outros.

  • você deseja prever tempos de caça de ácaros. Se for aceitável restringir a previsão a determinadas condições, você poderá formular essas e excluir todas as outras amostras e dizer que seu modelo preditivo lida com essa ou aquela situação, embora você já conheça outras situações (descreva aqui fora).

  • Lembre-se de que excluir dados com a ajuda do diagnóstico de modelo pode criar uma espécie de profecia auto-realizável ou um viés super-otimista (por exemplo, se você afirma que seu método é geralmente aplicável): mais amostras você exclui porque não se encaixa no seu premissas, melhores são as premissas atendidas pelas amostras restantes. Mas isso é apenas por causa da exclusão.

  • Atualmente, tenho uma tarefa em mãos em que tenho várias medições ruins (conheço o motivo físico pelo qual considero a medição ruim) e mais algumas que de alguma forma "parecem estranhas". O que faço é excluir essas amostras da formação de um modelo (preditivo), mas testar separadamente o modelo com elas para que eu possa dizer algo sobre a robustez do meu modelo em relação aos valores extremos dos tipos que eu sei que ocorrerão de vez em quando. enquanto . Assim, o aplicativo de uma forma ou de outra precisa lidar com esses valores discrepantes.

  • Outra maneira de olhar para os discrepantes é perguntar: "Quanto eles influenciam o meu modelo?" (Alavancagem). Desse ponto de vista, você pode medir a robustez ou a estabilidade em relação a amostras de treinamento estranhas.

  • Qualquer que seja o procedimento estatístico utilizado, ele não identifica discrepâncias ou também possui falsos positivos. Você pode caracterizar um procedimento de teste discrepante como outros testes de diagnóstico: ele tem sensibilidade e especificidade e - mais importante para você - eles correspondem (pela proporção discrepante de seus dados) a um valor preditivo positivo e negativo. Em outras palavras, principalmente se seus dados tiverem muito poucos discrepantes, a probabilidade de um caso identificado pelo teste discrepante ser realmente discrepante (ou seja, não deve constar nos dados) pode ser muito baixa.
    Acredito que o conhecimento especializado sobre os dados disponíveis é geralmente muito melhor na detecção de valores extremos do que testes estatísticos: o teste é tão bom quanto as suposições por trás dele. E o tamanho único geralmente não é realmente bom para a análise de dados. Pelo menos eu lida frequentemente com uma espécie de discrepantes, em que especialistas (sobre esse tipo de medição) não têm problemas para identificar a parte exata do sinal comprometida enquanto os procedimentos automatizados geralmente falham (é fácil fazê-los detectar que existe uma problema, mas é muito difícil fazê-los descobrir onde o problema começa e onde termina).

cbeleites descontentes com o SX
fonte
Há muita informação boa aqui. Eu gosto especialmente pontos de bala # 4 e 5.
gung - Reintegrar Monica
4

Para valores extremos univariados, há o teste da razão de Dixon e o teste de Grubbs assumindo a normalidade. Para testar um erro externo, é necessário assumir uma distribuição populacional, porque você está tentando mostrar que o valor observado é extremo ou incomum, proveniente da distribuição assumida. Tenho um artigo no American Statistician em 1982 que posso ter mencionado aqui antes, mostrando que o teste da proporção de Dixon pode ser usado em pequenas amostras, mesmo para algumas distribuições não normais. Chernick, MR (1982) "Uma nota sobre a robustez da proporção de Dixon em pequenas amostras" American Statistician p 140. Para outliers e outliers multivariados em séries temporais, funções de influência para estimativas de parâmetros são medidas úteis para detectar informalmente outliers (eu não sei de testes formais construídos para eles, embora esses testes sejam possíveis)."Outliers in Statistical Data" para tratamento detalhado dos métodos de detecção de outlier.

Michael R. Chernick
fonte
3

Veja http://www.waset.org/journals/waset/v36/v36-45.pdf , "Sobre a detecção externa em regressão não linear" [ sic ].

Abstrato

A detecção de outliers é muito essencial devido à sua responsabilidade em produzir um enorme problema interpretativo tanto na análise de regressão linear quanto na não-linear. Muito trabalho foi realizado na identificação de outlier na regressão linear, mas não na regressão não linear. Neste artigo, propomos várias técnicas de detecção de outlier para regressão não linear. A idéia principal é usar a aproximação linear de um modelo não linear e considerar o gradiente como a matriz de projeto. Posteriormente, as técnicas de detecção são formuladas. São desenvolvidas seis medidas de detecção, combinadas com três técnicas de estimação, como os mínimos quadrados, M e MM-estimadores. O estudo mostra que, dentre as seis medidas, apenas os resíduos estudados e a distância de cozimento, combinados com o estimador MM,

mangueira
fonte
+1 Apesar dos problemas óbvios com o inglês (e na composição matemática), este artigo parece ser uma contribuição útil para a questão.
whuber
2

Um outlier é um ponto que está "muito longe" de "alguma linha de base". O truque é definir ambas as frases! Com a regressão não linear, não se pode apenas usar métodos univariados para ver se um outlier está "muito longe" da curva de melhor ajuste, porque o outlier pode ter uma influência enorme na própria curva.

Ron Brown e eu desenvolvemos um método único (que chamamos de ROUT - regressão robusta e remoção de outlier) para detectar os outliers com regressão não linear, sem deixar que o outlier afete muito a curva. Primeiro ajuste os dados com um método de regressão robusto, onde os valores extremos têm pouca influência. Isso forma a linha de base. Em seguida, use as idéias da taxa de descoberta falsa (FDR) para definir quando um ponto está "muito longe" dessa linha de base e, portanto, é um desvio. Finalmente, remove os valores discrepantes identificados e ajusta-se aos pontos restantes convencionalmente.

O método é publicado em um periódico de acesso aberto: Motulsky HJ e Brown RE, Detectando Outliers ao Ajustar Dados com Regressão Não Linear - um novo método baseado em regressão não linear robusta e taxa de descoberta falsa , BMC Bioinformatics 2006, 7: 123. Aqui está o resumo:

Fundo. A regressão não linear, como a regressão linear, pressupõe que a dispersão dos dados em torno da curva ideal segue uma distribuição gaussiana ou normal. Essa suposição leva ao objetivo familiar da regressão: minimizar a soma dos quadrados das distâncias verticais ou do valor Y entre os pontos e a curva. Os valores extremos podem dominar o cálculo da soma dos quadrados e levar a resultados enganosos. No entanto, não conhecemos nenhum método prático para identificar rotineiramente outliers ao ajustar curvas com regressão não linear.

Resultados. Descrevemos um novo método para identificar discrepantes ao ajustar dados com regressão não linear. Primeiro ajustamos os dados usando uma forma robusta de regressão não linear, com base no pressuposto de que a dispersão segue uma distribuição lorentziana. Criamos um novo método adaptativo que gradualmente se torna mais robusto à medida que o método prossegue. Para definir discrepantes, adaptamos a abordagem da taxa de falsas descobertas para lidar com múltiplas comparações. Em seguida, removemos os outliers e analisamos os dados usando a regressão de mínimos quadrados ordinários. Como o método combina regressão robusta e remoção externa, chamamos de método ROUT.

Ao analisar dados simulados, onde toda a dispersão é gaussiana, nosso método detecta (falsamente) um ou mais valores extremos em apenas 1 a 3% dos experimentos. Ao analisar dados contaminados com um ou vários outliers, o método ROUT tem bom desempenho na identificação de outlier, com uma taxa média de descoberta falsa menor que 1%.

Conclusão. Nosso método, que combina um novo método de regressão não linear robusta com um novo método de identificação de outlier, identifica outliers de curvas não lineares com potência razoável e poucos falsos positivos.

Não foi (até onde eu sei) implementado em R. Mas nós o implementamos no GraphPad Prism. e forneça uma explicação simples na ajuda do Prism .

Harvey Motulsky
fonte
0

Sua pergunta é muito geral. Não existe o melhor método para excluir os "outliers".

Você tinha que conhecer algumas propriedades dos "outliers". ou você não sabe qual método é o melhor. Depois de decidir qual método você deseja usar, é necessário calibrar os parâmetros do método cuidadosamente.

ZYD
fonte