Documente Academic
Documente Profesional
Documente Cultură
Departamento de Estatística
Universidade Federal de Minas Gerais
Novembro 2018
Contents
1 Introdução 5
1.1 O que são splines? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.1 Vantagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.2 Desvantagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Método de Ajuste 7
2.1 Spline Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Spline Cúbica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Spline Natural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 Aplicação 11
3.1 Dados gerados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 Spline Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3 Spline Cubica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.4 Spline Natural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.5 Código R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Bibliography 21
3
1
Introdução
1.1.1 Vantagens
• Maior flexibilidade para o ajuste dos modelos se comparado ao modelo de regressão linar ou
polinomial;
• Permite modelar comportamento atípico dos dados, o que não seria possível com apenas uma
função/modelo;
• Uma vez determinados a quantidade e localização dos nós, o modelo é de fácil ajuste.
1.1.2 Desvantagens
• Pode gerar overfitting, prejudicando a capacidade preditiva do modelo;
• Incluir mais nós que o necessário pode levar a uma piora do ajuste do modelo;
5
2
Método de Ajuste
A ideia básica do método é substituir o vetor de inputs X, por variáveis adicionais, que serão combinações
de X e então utilizar a aproximação linear nesse novo espaço gerado pelos inputs.
Denotando por hm (X) : <p → < a m-ésima transformação de X, m=1,...,M, temos então o modelo:
PM
f (X) = m=1 βm hm (X),
obtendo-se assim uma expansão linear de bases em X. Após a definição de hm os modelo são lineares sob
essas novas variáveis e os métodos propostos podem então ser aplicados nesse novo espaço.
Alguns problemas praticos irão exigir para uma escolha particular das funções de base hm , como
logaritmos ou funções de exponencias. Comumente, escolhe-se as funções de base hm para aumentar a
flexibilidade de f (X) e consequentemente do modelo. Polinômios são um exemplo dessa flexibilizacão,
porém, devido a sua natureza tendem a distorcer a realidade em regiões remotas. Nesse trabalho vamos
focar nos ajustes polinomiais.
Utilizando um polinômio de ordem n − 1 temos um ajuste perfeito aos dados, ou seja, o polinomio é
capaz de passar por todos os pontos dos dados. No entanto, apesar do ajuste ser perfeito, é fácil ver que a
curva ajustada não é robusta para prever novos dados. Uma alternativa é ajustar polinômios de menor
grau por partes.
Figure 2.1: Ajuste obtido usando um polinomio de terceiro grau (sem Splines) .
7
O polinômio por partes é definido da seguinte forma:
Então para as três sub-regiões definidas anteriormente o estimador de mínimos quadrados para o
modelo f (X) = 3m=1 βm hm (X) é igual a βm = (Y¯ )m , no qual (Y¯ )m é a média dos Y’s pertencentes
P
ao m-ésimo intervalo
É importante destacar que os exemplos anteriores não se preocupam com a continuação da função
f (X). Para garantir a continuidade é necessário incluir restrições no modelo, como por exemplo:
ou seja,
β1 + β4 ξ1 = β2 + β5 ξ1 e β2 + β5 ξ2 = β3 + β6 ξ2
Nesse caso, como temos duas restrições perdemos 2 graus de liberdade, deixando apenas 4 parâmetros.
Uma maneira mais direta é utilizar uma base que diretamente incorpora tais restrições:
Em relação à escolha da posição dos nós ξk , não se trata de uma decisão tão importante no resultado
do modelo, pois o bom ajuste depende muito mais da quantidade de nós internos k. Popularmente,
costuma-se utilizar de três a sete nós, por isso, um bom método é utilizar os quantis (tercis, quartis, quintis,
etc).
Harrel (2001) recomenda que o número de nós seja decidido levando em conta o tamanho da amostra
disponível. Para uma amostra menor que 100, o uso de 4 nós internos geralmente produz um ajuste
adequado e retorna um modelo balanceado em relação à flexibilidade e à perda de precisão. Para amostras
grandes, o uso de 5 nós é um ponto de partida razoável. Para 7 ou mais nós a classificação passa a perder
significado, tornando a análise subjetiva.
e os correspondentes valores da função f (x0 ), f (x1 ), ..., f (xn ) e, designando o intervalo [xi−1 , xi ] por
segmento i, i = 1, 2, ..., n. A spline linear pode ser escrita em cada subintervalo i como:
i −x
si (x) = f (xi−1 ) xix−x i−1
+ f (xi ) xx−x i−1
i −xi−1
, para i = 1, 2, ..., n
A spline linear resultante é uma função contínua no intervalo [x0 , xn ], no entanto, a primeira derivada
é descontínua nos nós (ponto de união dos polinômios)
8
2.2 Spline Cúbica
As splines cúbicas são as de menor ordem nas quais a descontinuidade nos nós são suaves o suficiente
para não serem vistas a olho nu. Portanto, existe pouca justificativa para utilizar splines de maior ordem,
a não ser que por algum motivo específico seja necessário mais derivadas suavizadas. Dessa forma, é
necessário escolher a ordem da spline, o número de nós e suas localizações.
A spline cúbica pode ser dividida em duas categorias: Restrita e Irrestrita. Se as caudas (partes do
polinômio antes do primeiro nó e depois do último nó) forem modeladas através de funções lineares,
temos o caso restrito ou também conhecido como spline natural. Se as caudas não forem modeladas
através de funções lineares temos o caso irrestrito.
Seja f uma função em [a, b]. Uma spline cúbica interpolada para f é a função contínua S tal que:
(i) para i = 1, ..., N , em cada intrvalo [xi−1 , xi ] seja S(x) = si (x), onde cada um dos si é um polinômio
cúbico;
(ii)si (xi−1 ) = f (xi−1 ), para i = 1, ..., N ;
(iii)si (xi ) = f (xi ), para i = 1, ..., N ;
(iv)s0i (xi ) = s0i+1 ( xi ), para i = 1, ..., N − 1;
00 00
(v)si (xi ) = si+1 ( xi ), para i = 1, ..., N − 1
A spline cúbica é uma função que interpola f em N + 1 pontos, possui a primeira e a segunda derivada
contínuas em [x0 , xN ]
A função spline cúbica com k pontos pode ser escrita, de forma geral, como:
9
2.3 Spline Natural
Uma spline natural (ou spline cúbica restrita) utiliza a suposição de que a funções são lineares além das
fronteiras. Essa hipótese de linearidade nas regiões próximas às fronteiras é considerada adequada já que
essa é uma região com pouca informação.
Temos uma spline natural se:
(i) para i = 1, ..., N , em cada intrvalo [xi−1 , xi ] seja S(x) = si (x), onde cada um dos si é um polinômio
cúbico;
(ii)si (xi−1 ) = f (xi−1 ), para i = 1, ..., N ;
(iii)si (xi ) = f (xi ), para i = 1, ..., N ;
(iv)s0i (xi ) = s0i+1 ( xi ), para i = 1, ..., N − 1;
00 00
(v)si (xi ) = si+1 ( xi ), para i = 1, ..., N − 1;
00 00
(vi)si (x0 ) = si (xN ) = 0.
Os pedaços de polinômios de spline cúbico acabam se tornando uma única curva contínua, pois o
encontro das funções no ponto de corte é forçado através de uma restrição implícita no modelo, onde as
derivadas das funções se igualam, com o intuito de atender a restrição de continuidade do modelo.
10
3
Aplicação
Figure 3.1: Plot dos dados gerados. A linha vermelha representa a curva real (sem os erros )
Esse modelo permite que uma curva seja ligada a próxima, para que não haja descontinuidade. A
inclinacao da curva muda somente quando ela passa pelo nó.
Os preditores auxiliares max( 0, X-k ) fazem com que a inclinação só mude a partir de max(0, X −
k) = X − k.
11
Figure 3.2: Preditores auxiliares.
12
Figure 3.4: Ajuste obtido usando um polinomio de terceiro grau (sem Splines) .
Agora utilizando uma Spline Cubica para impedir que haja mudança de direção brusca entre as retas.
Ŷ = β0 + β1 X + β2 X 2 + β3 X 3
+β4 max(0, X − 6)3 + β5 max(0, X − 12)3 + β6 max(0, X − 18)3
Semelhante ao que foi feito na Spline Linear, agora adiciona-se os termos cubicos auxiliares ao invés de
termos lineares. O modelo resultante permite maior flexibilidade que o modelo polinomial sem as splines.
Os preditores auxiliares max(0, X − k)3 fazem com que a inclinação só mude a partir de max(0, X −
k)3 = (X − k)3 .
13
Figure 3.6: Ajuste obtido usando a Spline Cubica.
Um segundo ajuste Spline Natural foi realizado, dessa vez sem especificar a posição dos nós. Para
esse ajuste são especificados os graus de liberdade df. A função ns() então escolhe df - 1 - intercept nós
em quantis de x adequadamente escolhidos.
Figure 3.8: Ajuste obtido usando a Spline Natural para diferentes nós.
14
3.5 Código R
################
#
# Gerando dados
#
################
# Dados gerados
y <- mu + e
plot( x, y )
lines( x, mu, col="red" )
title("Simulated data")
################
#
# Spline Linear
#
################
15
x18 <- ( x - 18 )
x18[ x18<0 ] <- 0
#
#print( cbind( x, x6, x12, x18 ) )
#plots
x11()
grid = seq(1,24,0.05)
plot(grid,x6, ylab = "X-k", xlab = "Value",
main = "New predictors", type = "l")
lines(grid,x12,col="red")
lines(grid,x18,col="blue")
lines(grid,x,col="darkgreen")
legend("topleft", inset = 0.05, col=c("darkgreen","black","red","blue"),
lty = c(1,1,1,1),legend = c("X","X-6","X-12","X-18"))
plot( x, y )
lines( x, mu, col="red" )
lines( x, fitted.mean, col="blue", lwd=2 )
title("Data, true mean curve (red), and fitted (blue) using linear spline")
abline(v = 6, lty = 2)
abline(v = 12, lty = 2)
abline(v = 18, lty = 2)
##### A spline linear permite uma mudanca de direcao na posicao dos nos.
################
#
# Spline Cubica
#
################
16
x.squared <- x^2
x.cubed <- x^3
plot( x, y )
lines( x, mu, col="red" )
lines( x, fitted.mean.pol, col="green", lwd=2 )
title("Data, true mean curve (red),
and fitted (green) using cubic pol.(No Splines)")
#plots
x11()
grid = seq(1,24,0.05)
plot(grid,x6.cubed, ylab = "(X-k)^3", xlab = "Value",
main = "New predictors", type = "l")
lines(grid,x12.cubed,col="red")
lines(grid,x18.cubed,col="blue")
lines(grid,x^3,col="darkgreen")
legend("topleft", inset = 0.05, col=c("darkgreen","black","red","blue"),
lty = c(1,1,1,1),legend = c("X^3","(X-6)^3","(X-12)^3","(X-18)^3"))
# Ajuste do modelo
fit <- lm( y ~ x + x.squared + x.cubed + x6.cubed + x12.cubed + x18.cubed )
plot( x, y )
17
lines( x, mu, col="red" )
lines( x, fitted.mean.pol, col="green", lwd=2 )
lines( x, fitted.mean.cub, col="blue", lwd=2 )
title("Data, true mean curve (red),
fitted (blue) using cubic spline and polynomial (green)")
abline(v = 6, lty = 2)
abline(v = 12, lty = 2)
abline(v = 18, lty = 2)
################
#
# Spline Natural
#
################
#install.packages("splines")
library( splines )
#
fit <- lm( y ~ ns( x, knots=c(6,12,18) ) )
plot( x, y )
lines( x, mu, col="red" )
lines( x, fitted.mean.cub, col="green", lwd=2 )
lines( x, fitted.mean, col="blue", lwd=2 )
title("Data, true mean curve (red),
fitted (blue) using natural spline and (green) cubic spline")
abline(v = 6, lty = 2)
abline(v = 12, lty = 2)
abline(v = 18, lty = 2)
################
#
# Spline Natural, sem fixar nos
#
################
18
fit3 <- lm( y ~ ns( x, df = 3 ) )
fit5 <- lm( y ~ ns( x, df = 5 ) )
fit10 <- lm( y ~ ns( x, df = 10 ) )
plot( x, y )
lines( x, mu, col="red" )
lines( x, fitted.mean.1, col="goldenrod", lwd=2 )
lines( x, fitted.mean.3, col="blue", lwd=2 )
lines( x, fitted.mean.5, col="green", lwd=2 )
lines( x, fitted.mean.10, col="orange", lwd=2 )
title("Natural Splines for 1,3,5 and 10 Degrees of Freedom")
19
Bibliography
[2] Harrell, F. Regression Modeling Strategies with Applications to Linear Models, Logistic Regression
and Survival Analysis. New York: Springer-Verlag 2001.
[3] Hastie, T., Tibshirani, R and Friedman, J. The Elements of Statistical Learning. California: Springer
2008. Second Edition.
21