Quais são as maneiras de lidar com covariáveis ​​circulares (por exemplo, com um GAM)?

8

Estou construindo um modelo no qual várias de minhas covariáveis ​​vivem em um "círculo", no sentido em que assumem valores no intervalo [0,1) e 0 = 1. Estou pensando em técnicas para lidar com essa situação. Uma idéia é representar uma variável circular teta como um par de variáveis ​​(sin (teta), cos (teta)). Alguma opinião sobre essa abordagem ou melhores abordagens?

Estou usando especificamente os GAMs do pacote mgcv. Existe uma maneira de dizer ao modelo que certas peças aditivas devem ter os mesmos valores nos pontos finais? Outro pacote?

Obrigado!

DavidR
fonte
2
Eu só vi seno e cosseno como você mencionou, aqui está outra pergunta no site que faz uma pergunta semelhante: regressão logística com dados direcionais como IV . Em esta questão ao longo de SO Iterator tem um comentário apontando para um circularpacote que pode, eventualmente, ser de interesse. Espero que você obtenha respostas melhores.
Andy W
2
@ Andy senos e cossenos não são a única base, nem são a única base ortogonal, para as funções periódicas (integráveis ​​ao quadrado). Um de seus méritos é que muitas vezes a teoria física os envolve em relacionamentos com outras variáveis. Isso sugere que devemos estar profundamente interessados ​​na relação hipotética ou esperada entre o DV e essas covariáveis. DavidR, o que você pode nos dizer sobre isso?
whuber
Estou tentando modelar um processo temporal periódico. Meus dados originais são a data e a hora dos eventos e gostaria de modelar a taxa desses eventos ao longo do tempo. Espero que haja periodicidade em relação à hora do dia, dia da semana e época do ano, para iniciantes. Essas são as variáveis ​​circulares óbvias. Estou começando com um Poisson-GAM. Estou interessado em examinar os efeitos de cada uma delas separadamente, bem como em fazer previsões de taxas para tempos futuros.
DavidR

Respostas:

6

Existem duas maneiras de lidar com variáveis ​​circulares, um método hacky seria duplicar manualmente seu conjunto de dados em ambos os lados das condições de contorno, mas a solução mais elegante que eu acho seria usar as funções básicas de spline internas com condições de contorno periódicas !

Por exemplo:

bs="cc"especifica uma splines de regressão cúbica cíclica (consulte cyclic.cubic.spline). isto é, uma regressão cúbica penalizada splines cujas extremidades correspondem, até a segunda derivada.

Splines na esfera

bs="sos". Estes são splines bidimensionais em uma esfera. Os argumentos são latitude e longitude, e são o análogo de splines de chapa fina para a esfera. Útil para dados amostrados em uma grande parte do globo, quando a isotropia é apropriada. Veja Spherical.Splinepara detalhes.

bs="cp" fornece uma versão cíclica de um spline P

Markus Loecher
fonte
Isso parece perfeito! Eu vou tentar isso. Eu tinha pensado no método hacky, mas como tenho várias variáveis ​​circulares, pensei que teria que criar um grande número de pontos de dados duplicados para mostrar todas as simetrias diferentes no problema.
quer
@DavidR Tive um bom sucesso usando splines cúbicos circulares para fenômenos de baixa frequência. Você precisa o suficiente para representar a frequência mais alta que deseja modelar. Isso descartará os períodos horários e diários, mas pode funcionar bem para a sazonalidade. Para os dois primeiros, a parcimônia sugere começar com uma base pequena, como seno e cosseno, para cada frequência esperada.
whuber
@whuber, acho que você não entendeu a abordagem de modelagem do DavidR. David está usando variáveis ​​separadas para hora, dia da semana etc. Portanto, ele aplicaria um spline separado para cada um. (Gostaria de receber seus pensamentos como estou fazendo algo similar)
seanv507
Whuber, eu concordo com o seu argumento de que, por exemplo, modelar compras mais pesadas em dezembro exigiria uma spline de ordem alta na variável de meses.
seanv507
0

Você pode pesquisar Gill e Hangartner (2010). Dados circulares em ciência política e como lidar com isso . Eles falam sobre vários modelos de dados circulares / de relógio / sazonais, e Jeff Gill fornece código R para o artigo no qual você pode procurar inspiração. Deveria haver uma versão de apresentação deste material que entrelaçasse a metodologia e o código R juntos.

StasK
fonte
Obrigado por este ponteiro na literatura sobre dados circulares. Parece um bom ponto de partida. Eu rapidamente vasculhei este artigo em particular e parece lidar com respostas circulares, em vez de covariáveis ​​circulares.
DavidR