Uma revisão dos procedimentos da função spline em R

O termo ‘spline’ refere-se a uma ferramenta de um artesão, uma faixa fina flexível de madeira ou metal, usada para traçar curvas suaves. Vários pesos seriam aplicados em várias posições para que a tira dobrasse de acordo com o seu número e posição. Isto seria forçado a passar por um conjunto de pontos fixos: pinos de metal, as costelas de um barco, etc. Numa superfície plana, estes eram frequentemente pesos com um gancho preso e, portanto, fáceis de manipular. A forma do material dobrado assumiria naturalmente a forma de uma curva estriada. Similarmente, estrias são usadas em estatísticas a fim de reproduzir matematicamente formas flexíveis. Os nós são colocados em vários lugares dentro da faixa de dados, para identificar os pontos onde as peças funcionais adjacentes se unem umas às outras. Em vez de listras de metal ou madeira, as peças funcionais lisas (geralmente polinómios de baixa ordem) são escolhidas para se ajustarem aos dados entre dois nós consecutivos. O tipo de polinômio e o número e posicionamento dos nós é o que então define o tipo de spline.

Exemplo motivador

Com a introdução dos modelos de aditivos generalizados (GAMs) em 1986, o uso da modelagem de spline tornou-se uma ferramenta estabelecida na análise de regressão estatística. Para ilustrar isto, considere dados sobre um conjunto de 892 fêmeas com menos de 50 anos recolhidos em três aldeias na África Ocidental (dados disponíveis no ficheiro adicional 1: Apêndice). Gostaríamos de explorar a relação entre a idade (em anos) e uma medida bruta de gordura corporal, que é a espessura do tríceps da pele. A Figura 1 mostra a relação entre a idade e a espessura da prega tríceps medida em escala logarítmica. Para mais informações sobre os dados veja .

Fig. 1

Um gráfico de idade em anos contra a espessura da prega cutânea tríceps para 892 fêmeas na África Ocidental . A linha tracejada representa um ajuste linear simples, a linha sólida um ajuste usando polinómios flexíveis de terceiro grau

Um modelo de regressão simples da forma yi=β0+β1xi+ε,i=1,…,n, dificilmente daria uma aproximação do padrão observado, já que é óbvio que a relação não é linear. O modelo pode ser estendido para acomodar efeitos não lineares usando alguns polinómios. Então, os efeitos não lineares poderiam ser modelados por um polinômio de grau 3 dado por:

$$ y_{i}=\alfa_{0}+\alfa_{1} u_{i}+\alfa_{2} u_{i}^{2}+\alfa_{3} u_{i}^{3}+\epsilon $$
(1)

onde u é uma função de x chamada função base, definida aqui por:

$$U=\ esquerda $$

O modelo de regressão descrito em Eq. 1 ainda é um modelo linear, apesar de fornecer uma função não-linear da variável predizidora. O modelo ainda é linear nos coeficientes e pode ser ajustado usando os métodos dos mínimos quadrados comuns. A base pode ser criada em R usando a função poli(x,3) com inputs x (referente à variável), e p (referente ao grau do polinômio). Isto leva a um modelo simples e univariado da forma: yi=f(xi)+ε onde f() é alguma função/transformação do preditor. Tal modelo pode ser facilmente ajustado em R usando: lm(y ∼poly(x,3)). Apesar da simplicidade, a regressão polinomial tem vários inconvenientes, sendo o mais importante a não-localidade. Isso significa que a função ajustada a um determinado valor x0 depende de valores de dados muito distantes desse ponto. É fácil ver isso em ação encaixando um polinômio em um conjunto de dados e movendo um dos pontos de dados perto da borda direita para cima ou para baixo. Como resultado, a função ajustada normalmente mudará longe daquela coordenada x.

Considerar, em vez de ajustar um polinômio global, dividindo o intervalo de x em intervalos menores, utilizando um número arbitrário e posição de pontos, τ, também chamado de nós. Um modelo contínuo simples pode ser ajustado por meio da definição das funções: f1(x)=1,f2(x)=x,f3(x)=(x-τ1)+,f4(x)=(x-τ2)+,…, com “+” uma função definida como: $$

O conjunto destas funções leva a uma função composta f(x).

Definição de estrias

A estria metálica do desenhista pode assumir formas arbitrárias, por exemplo, a secção transversal de uma asa de avião ou a espiral de uma bomba centrífuga. Para aplicações estatísticas vamos assumir curvas da forma f(X), ou seja, um único valor y para cada x. O preditor x pode ser uma única variável ou múltiplas variáveis. Nossa discussão irá focar quase que inteiramente em uma função univariada com X(em matebb). Defina um conjunto de nós τ1<…<τK no intervalo de X. Um spline f(X) será uma função suave, satisfazendo certas propriedades de diferenciação mencionadas abaixo, de modo que f(X) é um polinômio de grau d. Os splines de madeira ou metal têm derivadas contínuas de todas as ordens, uma vez que são um objeto físico. Isto não é verdade para as estrias estatísticas. Ao invés disso, impomos um critério de suavidade de que todas as derivadas de ordem inferior a d são contínuas. Um spline físico é linear além do último nó e podemos impor uma restrição adicional de que as derivadas de ordem 2 ou maior sejam zero nos nós mais à esquerda e mais à direita; splines com essa restrição adicional são conhecidos como splines “restritos” ou splines “naturais”. Para obter curvas mais flexíveis, o número de nós ou o grau do polinômio pode ser aumentado. Há, no entanto, um trade-off; aumentar o número de nós pode sobreajustar os dados e aumentar a variância, enquanto que diminuir o número de nós pode resultar em uma função rígida e restritiva que tem mais viés.

Representação por funções de base

Partir do princípio que a função desconhecida f é representada por uma função spline com sequência de nós fixos e grau fixo d. Como estas últimas funções formam um espaço vectorial V, é possível escrever f como

$$ f(X)=\sum\limits_{k=1}^{K+d+1}\beta_{k} B_{k} (X) \, $$
(2)

onde os Bk são um conjunto de funções base definindo V e βk são os coeficientes de spline associados. Com knots há k+1 polinômios de grau d juntamente com d∗k restrições, levando a (d+1)(k+1)-d∗k=d+k+1 parâmetros livres; para um spline natural há k parâmetros livres. Desde βB=(βA)(A-1B)=γB∗ para qualquer matriz nãoingular A, há um número infinito de conjuntos de bases possíveis para o ajuste do spline.

A representação em (2) tem a vantagem que a estimativa de f reduz à estimativa dos coeficientes βk. Mais especificamente, a expressão em (2) é linear no vetor coeficiente β=(β1,…,βK+d+1). Portanto, a estimação de f pode ser vista como um problema de otimização que é linear nas variáveis transformadas B1(X),…,BK+d+1(X), permitindo a utilização de técnicas de estimação bem estabelecidas para o uso de splines em uma ampla gama de modelos (generalizados) de regressão multivariável. Importante, a modelação spline reduz a estimação das funções f() à estimação de um pequeno conjunto de coeficientes de valor real.

Como apontado por vários autores (por exemplo, a alta flexibilidade da modelação spline vem ao preço de um número de parâmetros de ajuste. Dois deles, a escolha das funções de base B e o grau d dos polinómios subjacentes, acabam por ter pouco impacto. Na verdade, os ajustes estriados são notavelmente robustos ao grau d. Os polinómios cúbicos (d=3) são o padrão usual, pois resultam em curvas que parecem perfeitamente lisas ao olho humano. Se as derivadas das curvas ajustadas forem de interesse, uma ordem mais elevada é por vezes apropriada, mas em geral os ajustes para d>3 são efectivamente indistinguíveis. Os ajustes com d=1 ou d=2 têm propriedades estatísticas quase idênticas, mas aparecerão mais dentados. A escolha entre dois conjuntos de base B e B∗ não irá, por definição, alterar as previsões de um ajuste e, portanto, se resume a questões de conveniência.

As duas escolhas chave estão no número e espaçamento dos nós e o uso (ou não) de uma função de penalidade, por exemplo, a segunda derivada integrada do spline. Quando não há penalização, a criação das variáveis transformadas pode ser feita separadamente e as novas variáveis são simplesmente incluídas em um ajuste de modelo padrão; nenhuma modificação do procedimento de regressão subjacente é necessária. Esta abordagem é frequentemente referida como splines de regressão; a flexibilidade da função não linear resultante é inteiramente uma função do número de nós. A inclusão de uma penalidade de suavização, por outro lado, requer a modificação da rotina de ajuste para acomodá-la. Isto tem que ser incluído em cada função de regressão separadamente. Os splines de alisamento resultantes têm várias propriedades desejáveis, mas a complexidade adicional da função de alisamento pode ser uma razão para não ter sido usada com mais freqüência em ajustes aplicados.

Embora tenha sido realizada uma pesquisa considerável para explorar as propriedades matemáticas das várias abordagens de spline (veja , estatísticas aplicadas e analistas de dados dificilmente parecem estar cientes desses resultados ao usar a modelagem de spline em aplicações práticas. De fato, muitos dos artigos identificados por nossa pesquisa na web não continham nenhuma justificativa para a escolha do método spline utilizado.

Base spline popular

Existem numerosas opções para a definição das funções de base Bk, onde as várias bases spline diferem em relação às suas propriedades numéricas . Nesta seção, vamos introduzir algumas das mais populares bases spline, nomeadamente a base truncada série de potências, a base B-spline e a base cardinal spline.

Série de potências truncada e Cubic splines

A base truncada série de potências é definida pelas funções da base

$$B_{1}(x) = 1, B_{2}(x) = x,…., B_{d+1}(x) = x^{d}, $$
$$B_{d+2}(x) = (x- \tau_{1})_{+}^{d},…, B_{K+d+1} = (x -\tau_{k})_{+}^{d} $$

Uma vantagem das funções de base acima é a sua fácil interpretação: Começando com um polinômio “básico” de grau d definido em (primeira linha da equação), os desvios do polinômio básico são sucessivamente adicionados à função spline à direita de cada um dos nós K (segunda linha). Um spline de base de potência truncado é d-1 vezes diferenciável nos nós e tem graus de liberdade d+K. É relativamente fácil para o usuário criar uma série de potências truncadas em R. Deixe x representar algumas observações em , depois uma base de potência truncada de grau d=3 com 5 nós igualmente espaçados ao longo do intervalo de x pode ser criada usando o Código 1 no arquivo adicional 1: Apêndice (Fig. 2).

Fig. 2

Função de base polinomial truncada de terceiro grau (d=3) com cinco nós equidistantes (K=5). Plot criado usando o Código #1 no arquivo Additional 1: Appendix

Uma característica da série de potências truncadas é que os suportes das funções não são locais, com alguns dos Bk sendo definidos ao longo de toda a gama de dados . Isto pode levar a altas correlações entre alguns splines de base, implicando em instabilidades numéricas na estimação do spline. Para a base de séries de potência truncadas, um exemplo é dado em , Capítulo 5.

Splines cúbicos são criados usando um polinômio cúbico em um intervalo entre dois nós sucessivos. O spline tem quatro parâmetros em cada uma das regiões K+1 menos três restrições para cada nó, resultando em um K+4 graus de liberdade.

A função cubic spline, com três nós (τ1,τ2,τ3) terá 7 graus de liberdade. Usando a representação dada na Eq. 2, a função pode ser escrita como:

$$ f(X)= \beta_{0} + \beta_{1} X + \beta_{2} X^{2} + Beta_{3} X^{3} + Beta_{4} (X-\tau_{1})^{3} +————————————————————————————————————————————————————————————————————————————————————————————————————————————– (X-\tau_{2})^{3} + Beta_{6} (X-\tau_{3})^{3} $$

B-splines

A base B-spline é uma base de spline comumente usada que é baseada numa parametrização especial de um cubic spline. A base B-spline , é baseada na sequência de nós

$$\begin{alinhado}. \xi_{1} \le {d}le {d}ldots &>le {d} \Ele…xi_{d+1} < \i_{d+2} < \i< \i_{d + K + 1} \\ 8799>< {d + K + 2}le {d + K + 3}le {d + K + 3}le {2d + K + 2},,, end{alinhado} $$

onde os conjuntos ξd+2 := τ1,…,ξd+K+1:=τK e ξd+1:=a,ξd+K+2:=b são referidos como “nós internos” e “nós de fronteira”, respectivamente. A escolha dos nós adicionais ξ1,…,ξd e ξd+K+3,…,ξ2d+K+2 é essencialmente arbitrária. Uma estratégia comum é colocá-los à altura dos nós de fronteira. Alternativamente, se os nós internos e os nós de limite ξd+1<…<ξd+K+2 forem escolhidos para serem equidistantes, isto é.., ξk+1-ξk=δ ∀k∈{d+1,…,d+K+1}, os nós de limite podem ser colocados em ξd+1-δ,…,ξd+1-d-δ e ξd+K+2+δ,…,ξd+K+2+d-δ.

Para d>0, as funções de base B-spline do grau d (denotadas por \(B_{k}^{d}(x)\)) são definidas pela fórmula recursivaFootnote 1

$$ \begin{alinhado} B_{k}^{d}(x)&=\frac{x-\xi_{k}}{\xi_{k+d}-\xi_{k}}B_{k}^{d-1}(x)-\frac{\xi_{k+d+1}-x}{\xi_{k+d+1}-\xi_{k+1}}B_{k+1}^{d-1}(x),\\k &= 1,….,K+d+1, $$

onde

$$B_{k}^{0}(x)=esquerda{begin{array}{cc} 1, & {k}xi_{k} \leq x < \xi_{k+1}}0, &text{else} \Fim de discussão \Certo. $$

e \\(B_{k}^{0}(x) \equiv 0\) se ξk=ξk+1. As linhas B têm a vantagem de que as funções de base têm suporte local. Mais especificamente, elas são maiores que zero em intervalos de d+2 nós e zero em outros lugares. Esta propriedade resulta em uma alta estabilidade numérica, e também em um algoritmo eficiente para a construção das funções da base, veja para detalhes.

Natural cubic e cardinal splines

A polinomial spline como um cubic ou um B-spline, pode ser errática nos limites dos dados. Para abordar esta questão, splines naturais são splines cúbicos que têm as restrições adicionais de serem lineares nas caudas dos nós limite (-∞,a], Capítulo 4.

Além das séries de potência truncadas de splines naturais, B-spline e base cardinal spline, existem várias outras bases – menos populares -. Para uma visão geral, nós nos referimos aos livros por .

Splines penalizados

Os splines apresentados até agora são frequentemente referidos como splines de regressão. Para além da escolha da base do spline (spline B, série de potências truncadas, etc.), o número de nós e as posições dos nós têm de ser escolhidos. Obviamente, estes parâmetros de afinação podem ter um impacto importante na forma estimada de uma função estriada: Um grande número de nós implica grande flexibilidade, mas também pode resultar em sobreajustar os dados em mãos. Inversamente, um pequeno número de nós pode resultar numa estimativa “demasiado suave” que é propensa a um viés de subajuste (ver ).

Uma abordagem popular para facilitar a escolha das posições dos nós na modelação de estrias é o uso de estrias penalizadas. Dado um i.i.d. amostra de dados (x1,y1),…(xn,yn), um spline penalizado é a solução para o problema

$$$$ que (beta) = {\beta} = {\beta_esquerda, $$

onde lβ denota a probabilidade de log-likelihood (ou, em caso de regressão de Cox, a probabilidade parcial de log-likelihood) e Jr é uma penalidade de rugosidade que se torna pequena se a função spline for “suave”. Geralmente, os splines penalizados são baseados na idéia de que a função f desconhecida é modelada por um spline com um grande número de nós, permitindo um alto grau de flexibilidade. Por outro lado, uma estimativa aproximada do spline que tem um alto valor de lβ e está próxima aos valores dos dados resulta em um grande valor de Jβ. A maximização desta função implica portanto um trade-off entre suavidade e ajuste do modelo que é controlado pelo parâmetro de ajuste λ≥0.

Um caso especial é o problema dos mínimos quadrados penalizados

$$ \ que (beta) = \text{argmin}_{\beta} \beta $$ esquerda
(3)

em regressão Gaussiana. A penalização… \Não sei… \esquerda (2 ^{2} f / 2 ^2 ^2 ^2 ^2 ^2 ^2 ^2 ^2} dx) expressa a “suavidade” de uma função spline em termos da segunda derivada de f. Para dado λ, pode-se mostrar que a solução é um spline cúbico natural com sequência de nó x(1)<…<x(n), ou seja as posições dos nós não precisam ser escolhidas, mas são ‘naturalmente’ dadas pelos valores de dados únicos ordenados de X. Na literatura, este tipo de spline é referido como spline suavizante . Note-se que um spline de suavização interpola os dados se λ=0, enquanto λ=∞ implica uma função linear. Note-se que splines de alisamento são um caso especial da classe mais geral de splines de placa fina , o que permite uma extensão do critério em Eq. (3) para xi de maior dimensão (ver , Seção 4.15], e para detalhes).

Uma propriedade conveniente de alisar splines é que a penalidade Jβ pode ser escrita como β⊤Ωβ com uma matriz de penalidade adequadamente definida Ω. Portanto a solução para (3) é dada pela estimativa dos mínimos quadrados penalizados

$$ {\beta} = ^esquerda(B^{\top} B + ^lambda ^Omega{\beta)^{-1} B^{\top} y $$
(4)

onde B é uma matriz de dimensão n×n contendo as funções de base de spline natural avaliadas nos valores dos dados. O vetor y contém os valores de resposta y1,…,yn. Na prática, existem algoritmos muito eficientes para computar {\i1}(o que {\i1}beta }) em (4) . Em vez de especificar uma base de spline natural para f, é ainda possível trabalhar com uma base de spline B sem restrições, já que a penalidade em (3) impõe automaticamente as restrições de linearidade nos nós x(1) e x(n) (ver , Capítulo 5, e , Capítulo 2). Em relação à base de linha B, os resultados da estimação não dependerão da escolha dos nós de limite: ou é possível usar x(1) e x(n) como nós de limite ou incluir x(1) e x(n) no conjunto de nós internos.

Se n é grande e o intervalo é densamente coberto pelos dados observados, geralmente não é necessário colocar um nó a cada xi,i=1,…,n. Em vez disso, a estria de alisamento pode ser aproximada por uma estria de regressão penalizada que usa um conjunto reduzido de nós. Uma classe muito popular de splines de regressão penalizada são os P-splines , que se baseiam na base do cubic B-spline e em um ‘grande’ conjunto de nós equidistantes (geralmente, 10-40). Em vez de avaliar a integral em (3), os P-splines são baseados em uma penalidade de diferença de segunda ordem definida por

$$J^{*}_{\beta} = \sum\limits_{k=3}^{K+4} \esquerda (Delta) (2) \$$

que, em caso de nós igualmente espaçados, pode ser uma aproximação a Jβ. O operador de diferenças de segunda ordem Δ2 é definido por Δ2βk:=(βk-βk-1)-(βk-1-βk-2). A penalidade pode ser expressa como β⊤Pβ, onde P é definido por D⊤D com D uma matriz de diferenças. É facilmente derivado que o estimador resultante de β tem a mesma estrutura de 2, com Ω substituído por P.

Uma propriedade conveniente dos P-splines é que eles são numericamente estáveis e muito fáceis de definir e implementar. Em particular, é muito mais fácil configurar a matriz de diferença D do que a matriz Ω. Também é simples estender a penalidade Jβ (e portanto a matriz D) para as diferenças de ordem mais alta Δq com q>2. Também é possível usar uma sequência de nós que não esteja uniformemente espaçada; neste caso, é necessário introduzir pesos. Uma vez que as estrias P com nós espaçados desigualmente são raramente utilizadas na prática, não as consideramos aqui e nos referimos a elas.

Suavizar estrias e estrias P superam o problema da seleção dos nós até certo ponto. A filosofia deles é usar um grande número de nós e depois deixar que λ controle a quantidade de suavidade. Isto resulta em um parâmetro de afinação extra, sem um consenso geral sobre como afinar este parâmetro. Algumas formas populares de determinar o valor “ótimo” do λ usam a validação cruzada generalizada (GCV), AIC ou uma representação de modelos mistos .

Splines em R

O pacote básico de instalação de R contém um conjunto de funções que podem se ajustar a splines polinomiais simples e splines suavizantes. Outras funções estão incluídas na biblioteca splines escritos por DM Bates e WN Venables. O pacote tem sido o cavalo de batalha da montagem de splines há muitos anos e agora faz parte da distribuição básica do R. Existem mais de 100 outros pacotes que dependem dos splines ao serem carregados. O pacote contém várias funções para criar bases splines, como bs para B-splines e ns para splines naturais, que são amplamente utilizadas, mas também algumas funções mais especializadas para criar funções básicas (como periodicSpline que cria um spline de interpolação periódica) ou comandos que são úteis, como o comando predict.bSpline que avaliaria um spline em novos valores de X.

Os valores padrão de bs criariam uma base cúbica B-spline com dois nós de limite e um nó interior colocado na mediana dos valores dos dados observados. Mais flexibilidade pode ser alcançada pelo usuário, aumentando a colocação e o número de nós e/ou mudando a sua localização. A figura 3 (código 2 no arquivo adicional 1: Anexo) mostra as linhas B criadas com diferentes opções. A parte superior apresenta estrias lineares, ou seja, polinómios de primeira ordem (grau é um) conectados entre si em nós equidistantes. A parte inferior apresenta polinômios cúbicos (grau 3).

Fig. 3

B-spline basis usando o comando bs em splines de biblioteca. No canto superior esquerdo: Base estriada de primeiro grau com três graus de liberdade. Superior direito: Base estriada de primeiro grau com quatro graus de liberdade. Em baixo à esquerda: Base estriada cúbica com três graus de liberdade. Inferior direita: Base estriada cúbica com quatro graus de liberdade. Gráficos criados usando o código #2

De notar que as linhas B criadas em R com bs() são automaticamente limitadas pelo intervalo dos dados, e que os nós adicionais (τ1,…,τd) são definidos iguais aos nós limite, dando múltiplos nós em ambas as extremidades do domínio. Esta abordagem é útil em casos univariados e tem algumas características computacionalmente atraentes. Entretanto, se trabalharmos com um problema de suavização bidimensional, usando produtos tensoriais de splines B, ou quando trabalharmos com splines P, esta base é inadequada e pode levar a resultados espúrios.

Splines naturais podem ser criados dentro do pacote splines, usando o comando ns. Por padrão, a menos que o usuário especifique os graus de liberdade ou os nós, a função retorna uma linha reta dentro dos nós de limite. Figura 4 (código 3 no arquivo Additional 1: Appendix mostra splines naturais criados com diferentes opções.

Fig. 4

Natural cubic spline basis usando o comando ns em splines de biblioteca. No canto superior esquerdo: Base spline com dois graus de liberdade. Superior direito: Base estriada com três graus de liberdade. Em baixo à esquerda: Base estriada com quatro graus de liberdade. Em baixo, à direita: Base estriada com cinco graus de liberdade. Criado com Código#3

Para ilustrar como estas funções podem ser usadas na prática, considere novamente os dados da Secção 2.0.1. A Figura 5 (criada por (código 4 no arquivo Additional 1: Appendix)) mostra os ajustes obtidos usando os seguintes comandos: poly() para splines polinomicos ortogonais simples, smooth.spline() para alisar splines, bs() e ns() a partir de splines de biblioteca, para splines B-splines e natural splines respectivamente. O gráfico superior esquerdo mostra um ajuste linear simples nos dados (linha tracejada) e um ajuste polinomial de terceiro grau que é capaz de capturar a relação mais complexa entre as variáveis. No entanto, o gráfico no canto superior direito é particularmente interessante, pois apresenta os ajustes usando os valores padrão das funções spline. A linha verde vem das funções poly() e ns() que, por padrão, ambas definem uma linha reta. No outro extremo, a linha azul é um ajuste da função smooth.spline() que, se nenhum grau de liberdade for especificado, tende a diminuir os dados, ou seja, produz um ajuste muito flexível baseado -here- em 45 graus de liberdade. Um ajuste -visualmente – razoável aos dados pode ser alcançado quando quatro graus de liberdade são especificados (gráfico inferior esquerdo). Pode ser visto que existem algumas diferenças dependendo da base escolhida. A base polinomial (linha preta) é um pouco mais flexível do que as demais, especialmente em idades mais altas. Por outro lado, uma estria suavizante restrita a apenas quatro graus de liberdade é mais rígida do que outras abordagens, mas provavelmente exagera os dados em idades pequenas, entre os anos 0 e 10. Entre os dois extremos, as estrias B e as estrias naturais proporcionam ajustes muito semelhantes que captam o efeito de idades pequenas e tendem a ser menos influenciadas por casos extremos no final do espectro etário. Por último, o gráfico inferior direito mostra o quanto mais flexíveis os encaixes se tornam com graus adicionais de liberdade e sugere um possível viés excessivo devido ao uso de graus excessivos de liberdade.

Fig. 5

Um gráfico de idade em anos contra a espessura do tríceps para 892 fêmeas na África Ocidental. Superior esquerdo: Linha tracejada representa um ajuste linear simples, linha sólida um ajuste usando polinómios flexíveis de terceiro grau. Superior direito: As estrias encaixam usando os valores de R padrão. A linha verde é o resultado de um spline polinomial de grau 1 (valor padrão para polinomial de função, e um ajuste de um spline natural sem graus de liberdade especificados (valor padrão para polinomial de função ns). A linha vermelha vem de um spline b com três graus de liberdade (função bs e linha azul de um spline suavizante (da função smooth.spline). Inferior esquerda: A linha preta é polinomial fit, a linha vermelha b-spline fit, a linha verde é um spline natural fit e spline suavizante, tudo definido com quatro graus de liberdade. Inferior direita: As mesmas funções definidas com 10 graus de liberdade. Criado com o código #4

Uma nota sobre os graus de liberdade

Na prática, é sempre útil definir um spline por graus de liberdade. Esta abordagem é particularmente útil quando se trabalha com estrias B e estrias naturais. Os B-splines têm d+K, enquanto uma função de base de spline cúbica natural com nós K tem K+1 graus de liberdade, respectivamente. Por padrão, a função bs em R cria B-splines de grau 3 sem nós interiores e nós de limite definidos no intervalo da variável X. Como tal, a função cria três funções de base. Agora considere o seguinte caso: quando um usuário define um B-spline com um nó interior na mediana de X (bs(x,knots=median(x))) o software criará quatro funções (d=3 mais K=1 nós interiores, quatro graus de liberdade). Se entretanto, o usuário especificar na função os nós de limite dentro do argumento dos nós (bs(x,knots=c(min(x),median(x),max(x)))), a função terá seis graus de liberdade (d =3 mais k =3). Cuidado semelhante deve ser tomado com a função ns.

Ao trabalhar com estrias suavizantes, não é fácil especificar os graus de liberdade, uma vez que eles irão variar dependendo do tamanho da penalidade. Entretanto, na prática, splines penalizados também podem ser restritos a um número máximo de graus de liberdade ou graus de liberdade desejados.

Outros pacotes de spline

Broadly falando, a lista estendida de pacotes de spline contém tanto abordagens que são bastante similares ao que é apresentado aqui ou casos muito especializados que visam aplicações específicas. Na Tabela 1 alguns destes pacotes são apresentados juntamente com o número de downloads. O número se refere ao número de vezes que um pacote foi baixado, mas não a usuários únicos. Está além do escopo deste trabalho descrever em detalhes todas estas abordagens.

Table 1 R pacotes utilizados para a criação de splines

Deixe uma resposta

O seu endereço de email não será publicado.