Eu sei como executar uma regressão linear em um conjunto de pontos. Ou seja, eu sei como ajustar um polinômio de minha escolha a um determinado conjunto de dados (no sentido LSE). No entanto, o que não sei é como forçar minha solução a passar por alguns pontos específicos de minha escolha. Já vi isso ser feito antes, mas não me lembro como o procedimento foi chamado, muito menos como foi feito.
Como um exemplo muito simples e concreto, digamos que tenho 100 pontos espalhados no plano xy e opto por ajustar um polinômio de qualquer ordem através deles. Eu sei como executar essa regressão linear muito bem. No entanto, digamos que eu quero 'força' a minha solução, que passar por, digamos, três dos meus pontos de dados em coordenadas x , e , (e suas correspondentes coordenadas y claro).x = 19 x = 89
Como é chamado esse procedimento geral, como é feito e há alguma armadilha específica da qual preciso estar ciente?
Editar:
Gostaria de acrescentar que estou procurando uma maneira concreta de fazer isso. Eu escrevi um programa que realmente faz a regressão linear de uma de duas maneiras, invertendo a matriz de covariância diretamente ou através da descida do gradiente. O que estou perguntando é: como, exatamente, passo a passo, modifico o que fiz, de modo a forçar a solução polinomial a passar por pontos específicos?
Obrigado!
Respostas:
O modelo em questão pode ser escrito
onde é um polinômio de grau d - 1 passando por pontos predeterminados ( x 1 , y 1 ) , … , ( x d , y d ) e ε é aleatório. (Use o polinômio de interpolação de Lagrange .) Escrita ( x - x 1 ) ⋯ ( x - x d ) = rp(xi)=yi d−1 (x1,y1),…,(xd,yd) ε nos permite reescrever este modelo como(x−x1)⋯(x−xd)=r(x)
que é um problema de regressão múltipla OLS padrão com a mesma estrutura de erro que o original , onde as variáveis independentes são os quantidades de r ( x ) x i , i = 0 , 1 , ... , p . Simplesmente calcule essas variáveis e execute seu software de regressão familiar , evitando que ele inclua um termo constante. As advertências usuais sobre regressões sem termo constante se aplicam; em particular, o R 2 pode ser artificialmente elevado; as interpretações usuais não se aplicam.p+1 r(x)xi, i=0,1,…,p R2
(Na verdade, a regressão através da origem é um caso especial desta construção, em que , ( x 1 , y 1 ) = ( 0 , 0 ) , e p ( x ) = 0 , de modo que o modelo é y = β 0 x + ⋯ + β p x p + 1 + ε . )d=1 (x1,y1)=(0,0) p(x)=0 y=β0x+⋯+βpxp+1+ε.
Aqui está um exemplo trabalhado (em
R
)Os três pontos fixos são mostrados em vermelho sólido - eles não fazem parte dos dados. O ajuste mínimo de quadrados do polinômio de quarta ordem sem restrições é mostrado com uma linha pontilhada preta (possui cinco parâmetros); o ajuste restrito (da ordem cinco, mas com apenas três parâmetros livres) é mostrado com a linha vermelha.
Inspecionar a saída dos mínimos quadrados (
summary(fit0)
esummary(fit)
) pode ser instrutivo - deixo isso para o leitor interessado.fonte
Se você deseja forçar uma linha a passar por dois pontos em um plano XY, isso também é bastante fácil. Quaisquer dois pontos podem ser ajustados com uma linha. Você pode usar a fórmula da inclinação dos pontos para calcular sua inclinação e, em seguida, usar um dos pontos, a inclinação e a equação de uma linha para encontrar a interceptação.
Observe que talvez não seja possível ajustar uma linha reta através de três pontos em um plano de coordenadas. No entanto, podemos garantir que eles se encaixam perfeitamente com uma parábola (ou seja, usando os doisX e X2 ) Também há álgebra para isso, mas à medida que avançamos, pode ser mais fácil ajustar um modelo ao software, incluindo apenas esses três (mais) pontos no conjunto de dados. Da mesma forma, você pode obter a linha reta que melhor se aproxima desses três pontos, ajustando um modelo que tenha acesso apenas a esses três pontos.
Sinto-me compelido a mencionar, a essa altura, que isso pode não ser uma boa coisa a se fazer (a menos que sua teoria forneça razões muito sólidas para fazê-lo). Você também pode analisar a regressão bayesiana , onde pode permitir que seu modelo encontre a melhor combinação de informações em seus dados e algumas informações anteriores (que você pode usar para influenciar fortemente sua interceptação para zero, por exemplo, sem forçando).
fonte
To add a little extra information to @gung's excellent coverage of the linear case, in the higher order polynomial case there are several ways you could do it either exactly or approximately (but pretty much as accurately as you need).
Primeiro, observe que os graus de liberdade do polinômio (ou mesmo de qualquer função ajustada) devem ser pelo menos tão grandes quanto o número de pontos "conhecidos". Se os graus de liberdade forem iguais, você não precisará dos dados, pois a curva está completamente determinada. Se houver mais pontos "conhecidos", você não poderá resolvê-lo (a menos que todos estejam exatamente no mesmo polinômio do grau especificado, caso em que qualquer subconjunto de tamanho adequado será suficiente). Daqui em diante, falarei sobre quando o polinômio tem mais df do que os pontos conhecidos (como um cúbico - com 4df - e três pontos conhecidos, para que o cúbico não seja sobredeterminado por pontos conhecidos nem completamente determinado por eles) .
1) "a curva deve passar por esse ponto" é uma restrição linear nos parâmetros, resultando em estimativa restrita ou em mínimos quadrados restritos (embora ambos os termos possam incluir outras coisas além de restrições lineares, como restrições de positividade). Você pode incorporar restrições lineares por
(a) reformular a parametrização para incluir implicitamente cada restrição, resultando em um modelo de ordem inferior.
(b) usando ferramentas padrão que podem incorporar restrições lineares nos parâmetros de ajuste de mínimos quadrados. (geralmente por meio de algo como a fórmula fornecida no link acima)
2) Another way is via weighted regression. If you give the known points sufficiently large weight, you can get essentially the same fit as in (1). This is often readily implemented, can be substantially quicker than reparameterizing, and can be done in packages that don't offer constrained fitting.
All of @gung's caveats apply
fonte