Eu quero regredir uma variável em . Devo fazer isso usando polinômios brutos ou ortogonais? Eu olhei para a pergunta no site que lida com isso, mas eu realmente não entendo qual é a diferença entre usá-lo. x , x 2 , … , x 5
Por que não posso simplesmente fazer uma regressão "normal" para obter os coeficientes de y = ∑ 5 i = 0 β i x i (junto com os valores-p e todas as outras coisas legais) e, em vez disso precisa se preocupar se está usando polinômios brutos ou ortogonais? Essa escolha me parece estar fora do escopo do que eu quero fazer.
No livro de estatísticas que estou lendo atualmente (ISLR de Tibshirani et al), essas coisas não foram mencionadas. Na verdade, eles foram subestimados de certa forma.
O motivo é, AFAIK, que na lm()
função em R, use y ~ poly(x, 2)
quantidades para usar polinômios ortogonais e use y ~ x + I(x^2)
quantidades para usar brutos. Mas na p. 116 os autores dizem que usamos a primeira opção porque esta é "complicada", o que não deixa indicação de que esses comandos realmente atinjam coisas completamente diferentes (e tenham resultados diferentes como conseqüência).
(terceira pergunta) Por que os autores da ISLR confundiram seus leitores assim?
fonte
poly
tem algo a ver com polinômios ortogonais e eu (x ^ 2) não (embora eu não conheça os detalhes) - mas ainda assim, por que os autores da ISLR recomendariam um método que não funciona? ? Parece muito enganador se ambos os comandos parecem fazer o mesmo, mas apenas um realmente está ok.poly
e já gastei um tempo com esse problema, mas não consigo descobrir por que poli (x, 2) e x + I (x ^ 2) fazem a diferença? Poderia, por favor, me esclarecer aqui nos comentários, se a pergunta for offtopic?R
técnico menor , que eu não entendia, mas agora parece ser um problema estatístico completo que me impede de codificar uma regressão que não deveria ser difícil de codificar.Respostas:
Acredito que a resposta seja menos sobre estabilidade numérica (embora isso tenha um papel) e mais sobre como reduzir a correlação.
Em essência - a questão se resume ao fato de que, quando regredimos contra um monte de polinômios de alta ordem, as covariáveis contra as quais estamos regredindo se tornam altamente correlacionadas. Exemplo de código abaixo:
Isso é tremendamente importante. À medida que as covariáveis se tornam mais correlacionadas, nossa capacidade de determinar quais são importantes (e qual o tamanho de seus efeitos) diminui rapidamente. Isso geralmente é chamado de problema da multicolinearidade. No limite, se tivéssemos duas variáveis totalmente correlacionadas, quando as regredimos contra algo, é impossível distinguir entre as duas - você pode pensar nisso como uma versão extrema do problema, mas esse problema afeta nossas estimativas para graus menores de correlação também. Assim, em um sentido real - mesmo que a instabilidade numérica não tenha sido um problema - a correlação de polinômios de ordem superior causa um tremendo dano às nossas rotinas de inferência. Isso se manifestará como erros padrão maiores (e, portanto, estatísticas t menores) que você veria de outra forma (veja o exemplo de regressão abaixo).
Se você executar esse código, a interpretação é um pouco difícil, porque todos os coeficientes mudam e, portanto, as coisas são difíceis de comparar. Porém, olhando para as estatísticas T, podemos ver que a capacidade de determinar os coeficientes era MUITO maior com os polinômios ortogonais. Para os três coeficientes relevantes, obtive estatísticas t de (560,21,449) para o modelo ortogonal e apenas (28, -38,121) para o modelo polinomial bruto. Essa é uma grande diferença para um modelo simples, com apenas alguns termos polinomiais de ordem relativamente baixa que são importantes.
Isso não quer dizer que isso ocorra sem custos. Há dois custos principais a serem considerados. 1) perdemos alguma interpretabilidade com polinômios ortogonais. Podemos entender o que
x**3
significa o coeficiente em , mas interpretar o coeficiente emx**3-3x
(o terceiro poli hermita - não necessariamente o que você usará) pode ser muito mais difícil. Segundo - quando dizemos que esses polinômios são ortogonais - queremos dizer que são ortogonais em relação a alguma medida de distância. Escolher uma medida de distância relevante para sua situação pode ser difícil. No entanto, tendo dito isso, acredito que apoly
função seja projetada para escolher de forma que seja ortogonal em relação à covariância - o que é útil para regressões lineares.fonte
raw.mod
calcula a inclinação da curva em x = 0,orthogonal.mod
calcula a inclinação marginal (ou seja, idêntica alm(y ~ poly(x,1))
onde os termos de ordem superior são omitidos). Não há razão para que as estimativas dessas estimativas completamente diferentes tenham erros padrão comparáveis. Pode-se facilmente construir um contra-exemplo onderaw.mod
há estatísticas t muito mais altasPorque não é numericamente estável. Lembre-se de que o computador está usando um número fixo de bits para representar um número flutuante. Verifique IEEE754 para obter detalhes, você pode surpreender que mesmo o número simples , o computador precise armazená-lo como . Você pode tentar outros números aqui0,40000000596046447753906250,4 0.4000000059604644775390625
Usar polinômio bruto causará problemas, pois teremos um número enorme. Aqui está uma pequena prova: estamos comparando o número da condição da matriz com o polinômio bruto e ortogonal.
Você também pode verificar minha resposta aqui para um exemplo.
Por que existem grandes coeficientes para polinômios de ordem superior
fonte
R
saída deprint(0.4, digits=20)
é0.40000000000000002
.Sinto que várias dessas respostas estão completamente erradas. A resposta de Haitao aborda os problemas computacionais com o ajuste de polinômios brutos, mas é claro que o OP está perguntando sobre as diferenças estatísticas entre as duas abordagens. Ou seja, se tivéssemos um computador perfeito que pudesse representar todos os valores exatamente, por que preferiríamos uma abordagem à outra?
Criado em 2019-10-25 pelo pacote reprex (v0.3.0)
O efeito marginal de
Petal.Width
em 0 do ajuste ortogonal e seu erro padrão são exatamente iguais aos do ajuste polinomial bruto. O uso de polinômios ortogonais não melhora a precisão das estimativas da mesma quantidade entre os dois modelos.Criado em 2019-10-25 pelo pacote reprex (v0.3.0)
Agora, se você deseja esse benefício interpretativo sobre o benefício interpetacional de ser capaz de realmente entender os coeficientes do modelo, use polinômios ortogonais. Se você preferir olhar para os coeficientes e saber exatamente o que eles significam (embora eu duvide que um seja tipicamente), use os polinômios brutos. Se você não se importa (ou seja, você deseja apenas controlar a confusão ou gerar valores previstos), isso realmente não importa; os dois formulários carregam as mesmas informações com relação a esses objetivos. Eu também argumentaria que polinômios ortogonais devem ser preferidos na regularização (por exemplo, laço), porque a remoção de termos de ordem superior não afeta os coeficientes dos termos de ordem inferior, o que não é verdade em polinômios brutos,
fonte
stats::
na chamada parapoly()
alm()
paramargins
a reconhecê-lo (o que é estúpido). Eu queria focar meu argumento nas estimativas pontuais e nos erros padrão, e sei que há muitas informações estranhas e perturbadoras apresentadas, mas espero que o texto ilustre meus pontos.stats::poly()
. O erro diz'degree' must be less than number of unique points
- o que não me ajuda muito. No entanto,margin()
está fazendo backup de declarações prováveis, portanto não é importante.Confirmo a excelente resposta de @ user5957401 e adiciono comentários sobre interpolação, extrapolação e geração de relatórios.
Mesmo no domínio dos valores estáveis dos parâmetros, os coeficientes / parâmetros modelados pelos polinômios ortogonais terão erros padrão substancialmente menores que os coeficientes / parâmetros modelados pelos parâmetros brutos. Essencialmente, os polinômios ortogonais são um conjunto livre de descritores de covariância zero. Isso é PCA de graça!
A única desvantagem potencial é ter que explicar isso para alguém que não entende a virtude dos descritores de covariância zero. Os coeficientes não são imediatamente interpretáveis no contexto dos efeitos de primeira ordem (tipo velocidade) ou de segunda ordem (tipo aceleração). Isso pode ser bastante prejudicial em um ambiente de negócios.
Portanto, eu seria "ordens de grandeza" mais confiante em relatar o modelo ortogonal do que o modelo bruto. Na prática, eu interpolava com qualquer um dos modelos, mas extrapolava apenas com o modelo ortogonal.
fonte
Eu teria comentado apenas para mencionar isso, mas não tenho representante suficiente, então tentarei expandir para uma resposta. Você pode estar interessado em ver que, na Seção 7.8.1 do laboratório, em "Introdução à aprendizagem estatística" (James et. Al., 2017, 8ª impressão corrigida), eles discutem algumas diferenças entre o uso de polinômios ortogonais ou não, que está usando o método
raw=TRUE
ouraw=FALSE
napoly()
função. Por exemplo, as estimativas do coeficiente serão alteradas, mas os valores ajustados não:O livro também discute como quando polinômios ortogonais são usados, os valores p obtidos com o
anova()
teste F aninhado (para explorar qual grau de polinômio pode ser garantido) são os mesmos que os obtidos ao usar o teste t padrão, produzido porsummary(fit)
. Isso ilustra que a estatística F é igual ao quadrado da estatística t em determinadas situações.fonte