Estou executando modelos de regressão LOESS em R e quero comparar as saídas de 12 modelos diferentes com tamanhos de amostra variados. Posso descrever os modelos reais em mais detalhes, se ajudar a responder à pergunta.
Aqui estão os tamanhos das amostras:
Fastballs vs RHH 2008-09: 2002
Fastballs vs LHH 2008-09: 2209
Fastballs vs RHH 2010: 527
Fastballs vs LHH 2010: 449
Changeups vs RHH 2008-09: 365
Changeups vs LHH 2008-09: 824
Changeups vs RHH 2010: 201
Changeups vs LHH 2010: 330
Curveballs vs RHH 2008-09: 488
Curveballs vs LHH 2008-09: 483
Curveballs vs RHH 2010: 213
Curveballs vs LHH 2010: 162
O modelo de regressão LOESS é um ajuste de superfície, onde a localização X e a localização Y de cada campo de beisebol são usadas para prever a probabilidade de golpe sw, swing. No entanto, eu gostaria de comparar entre todos os 12 desses modelos, mas definir o mesmo intervalo (ou seja, intervalo = 0,5) produzirá resultados diferentes, pois existe uma variedade tão grande de tamanhos de amostra.
Minha pergunta básica é como você determina a extensão do seu modelo? Uma amplitude maior suaviza mais o ajuste, enquanto uma amplitude menor captura mais tendências, mas introduz ruído estatístico se houver poucos dados. Eu uso um intervalo maior para amostras menores e um intervalo menor para amostras maiores.
O que devo fazer? O que é uma boa regra geral ao definir o alcance dos modelos de regressão LOESS no R? Desde já, obrigado!
fonte
Respostas:
Uma validação cruzada é frequentemente usada, por exemplo, k- fold, se o objetivo é encontrar um ajuste com o menor RMSEP. Divida seus dados em k grupos e, deixando cada grupo de fora por sua vez, ajuste um modelo loess usando os grupos k -1 de dados e um valor escolhido do parâmetro de suavização e use esse modelo para prever o grupo deixado de fora. Armazene os valores previstos para o grupo deixado de fora e repita até que cada um dos k grupos tenha sido deixado de fora uma vez. Usando o conjunto de valores previstos, calcule o RMSEP. Em seguida, repita a coisa toda para cada valor do parâmetro de suavização que você deseja ajustar. Selecione o parâmetro de suavização que fornece o menor RMSEP em CV.
Isto é, como você pode ver, bastante computacionalmente pesado. Eu ficaria surpreso se não houvesse uma alternativa de validação cruzada generalizada (GCV) ao CV verdadeiro que você pudesse usar com LOESS - Hastie et al (seção 6.2) indicam que isso é bastante simples de fazer e é abordado em um de seus exercícios .
Sugiro que você leia as seções 6.1.1, 6.1.2 e 6.2, além das seções sobre regularização de splines de suavização (como o conteúdo também se aplica aqui) no capítulo 5 de Hastie et al. (2009) Os elementos do aprendizado estatístico: mineração, inferência e previsão de dados . 2ª Edição. Springer. O PDF pode ser baixado gratuitamente.
fonte
Sugiro verificar modelos aditivos generalizados (GAM, consulte o pacote mgcv em R). Eu mesmo estou aprendendo sobre eles, mas eles parecem descobrir automaticamente o quanto "perversidade" é justificado pelos dados. Também vejo que você está lidando com dados binomiais (aviso versus aviso), portanto, analise os dados brutos (ou seja, não agregue proporções, use os dados brutos passo a passo) e use family = 'binomial' (assumindo que você usará R). Se você tiver informações sobre quais arremessadores e rebatedores individuais estão contribuindo para os dados, provavelmente poderá aumentar seu poder fazendo um modelo misto aditivo generalizado (GAMM, consulte o pacote gamm4 em R) e especificando arremessador e rebatedor como efeitos aleatórios (e novamente , definindo família = 'binomial'). Finalmente, você provavelmente deseja permitir uma interação entre os efeitos de X e Y, mas nunca tentei isso sozinho, então não sei como fazer isso. Um modelo gamm4 sem a interação X * Y seria semelhante a:
Venha para pensar sobre isso, você provavelmente deseja permitir que as suavidades variem dentro de cada nível do tipo de afinação e capacidade da massa. Isso torna o problema mais difícil, pois ainda não descobri como permitir que os suavizados variem por várias variáveis de uma maneira que posteriormente produz testes analíticos significativos ( consulte minhas consultas na lista de modelos mistos R-SIG ). Você poderia tentar:
Mas isso não dará testes significativos dos suaves. Ao tentar resolver esse problema, usei a reamostragem de autoinicialização em que, em cada iteração, obtenho as previsões do modelo para todo o espaço de dados e, em seguida, calculo os ICs de inicialização de 95% para cada ponto do espaço e quaisquer efeitos que pretendo calcular.
fonte
Para uma regressão loess, no meu entendimento como não estatístico, é que você pode escolher seu período com base na interpretação visual (o gráfico com numerosos valores de período pode escolher aquele com a menor quantidade de suavização que parecer apropriada) ou você pode usar a validação cruzada (CV) ou validação cruzada generalizada (GCV). Abaixo está o código que eu usei para o GCV de uma regressão loess com base no código do excelente livro de Takezawa, Introdução à regressão não paramétrica (da p219).
e com meus dados, fiz o seguinte:
Desculpe, o código é um tanto desleixado, essa foi uma das minhas primeiras vezes usando R, mas deve lhe dar uma idéia de como fazer GSV para regressão de loess para encontrar o melhor espaço para usar de uma maneira mais objetiva do que a simples inspeção visual. No gráfico acima, você está interessado no intervalo que minimiza a função (mais baixo na "curva" plotada).
fonte
Se você mudar para um modelo de aditivo generlizado, poderá usar a
gam()
função do pacote mgcv , no qual o autor nos garante :(
k
aqui está o parâmetro dos graus de liberdade para o mais suave, semelhante ao parâmetro de suavidade do loess)fonte
Você pode escrever seu próprio loop de validação cruzada do zero que usa a
loess()
função dostats
pacote.Configure um quadro de dados de brinquedo.
Configure variáveis úteis para lidar com o loop de validação cruzada.
Execute um
for
loop aninhado iterando sobre cada possibilidade de extensão emspan.seq
e cada dobrafolds
.Plote seus resultados.
fonte
Use o pacote locfit. É uma versão ligeiramente modificada do loess, mas muito mais rápida. Ele também possui uma função integrada para calcular o gcv http://www.statistik.lmu.de/~leiten/Lehre/Material/GLM_0708/Tutorium/locfit.pdf
fonte
O pacote fANCOVA fornece uma maneira automatizada de calcular o intervalo ideal usando gcv ou aic:
fonte