Primeiro de tudo: Pelo que entendi, os resíduos de autoinicialização funcionam da seguinte maneira:
- Ajustar modelo aos dados
- Calcular os resíduos
- Amostra novamente os resíduos e adicione-os a 1.
- Ajuste o modelo ao novo conjunto de dados de 3.
- Repita os
n
tempos, mas sempre adicione os resíduos reamostrados ao ajuste de 1.
Isso está correto até agora?
O que eu quero fazer é algo um pouco diferente:
Quero estimar a incerteza de parâmetro e previsão para um algoritmo que estima alguma variável ambiental.
O que eu tenho é uma série temporal livre de erros (de uma simulação) dessa variável x_true
, à qual adiciono algum ruído, x_noise
para gerar um conjunto de dados sintético x
. Em seguida, tento encontrar parâmetros ideais ajustando meu algoritmo com a soma dos quadrados sum((x_estimate - x_true)^2)
(! Não x_estimate - x
!) Como uma função objetiva. Para ver o desempenho do meu algoritmo e criar amostras das distribuições dos meus parâmetros, quero reamostrar x_noise
, adicioná-lo x_true
, ajustar meu modelo novamente, enxaguar e repetir. Essa é uma abordagem válida para avaliar a incerteza dos parâmetros? Posso interpretar os ajustes nos conjuntos de dados iniciados como incerteza de previsão ou tenho que seguir o procedimento publicado acima?
/ edit: Eu acho que realmente não deixei claro o que meu modelo faz. Pense nisso como algo essencialmente como um método anti-ruído. Não é um modelo preditivo, é um algoritmo que tenta extrair o sinal subjacente de uma série temporal ruidosa de dados ambientais.
/ edit ^ 2: Para os usuários do MATLAB , escrevi alguns exemplos de regressão linear rápida e suja do que quero dizer.
Isto é o que eu acredito que o bootstrapping "comum" de resíduos é (por favor, corrija-me se estiver errado): http://pastebin.com/C0CJp3d1
Isto é o que eu quero fazer: http://pastebin.com/mbapsz4c
fonte
Respostas:
Aqui está o algoritmo geral (semi-paramétrico-bootstrap) com mais detalhes:
o modelo:
y=xβ+ϵ
que sejam os resíduosϵ^
fonte
Não tenho certeza se meu entendimento está correto. Mas aqui está minha sugestão para modificar seu código ("inicialização comum de resíduos", linhas 28-34) em:
A idéia é que, toda vez que você estiver usando resíduos, não da primeira execução, mas do ajuste de inicialização anterior. Quanto a mim, todos os outros parecem válidos.
Esta é uma versão revisada que foi verificada no MATLAB. Dois erros foram corrigidos.
fonte
Para ver o desempenho de um algoritmo em termos de precisão preditiva / erro ao quadrado médio, você provavelmente precisará da inicialização do "otimismo" do Efron-Gong. Isso é implementado para facilitar o uso no
rms
pacote R. Veja suas funçõesols
,validate.ols
,calibrate
.fonte