Estou aplicando um modelo linear aos meus dados: $$ y_ {i} = \ beta_ {0} + \ beta_ {1} x_ {i} + \ epsilon_ {i}, \ quad \ epsilon_ {i} \ sim N (0, \ sigma ^ {2}). $$
Gostaria de estimar o intervalo de confiança (IC) dos coeficientes ($ \ beta_ {0} $, $ \ beta_ {1} $) usando o método de bootstrap. Há duas maneiras de aplicar o método de bootstrap:
-
Amostra de preditor de resposta emparelhada: reamostrar aleatoriamente pares de $ y_ {i} -x_ {i} $ e aplicar linear regressão a cada corrida. Após $ m $ execuções, obtemos uma coleção de coeficientes estimados $ {\ hat {\ beta_ {j}}}, j = 1, … m $. Finalmente, calcule o quantil de $ {\ hat {\ beta_ {j}}} $.
-
Erro de amostra: primeiro aplique a regressão linear nos dados originais observados, a partir deste modelo obtemos $ \ hat {\ beta_ {o}} $ e o erro $ \ epsilon_ {i} $. Depois, reamostrar aleatoriamente o erro $ \ epsilon ^ {*} _ {i} $ e calcular os novos dados com $ \ hat {\ beta_ {o}} $ e $ y ^ {*} _ {i} = \ hat { \ beta_ {o}} x_ {i} + \ epsilon ^ {*} _ {i} $. Aplique mais uma vez a regressão linear. Após $ m $ execuções, obtemos uma coleção de coeficientes estimados $ {\ hat {\ beta_ {j}}}, j = 1, …, m $. Finalmente, calcule o quantil de $ {\ hat {\ beta_ {j}}} $.
Minhas perguntas são:
- Como esses dois métodos são diferentes?
- Sob qual suposição esses dois métodos estão dando o mesmo resultado?
Comentários
Resposta
Se os pares resposta-preditor foram obtidos de uma população por amostra aleatória, é seguro usar caso / aleatório -x / seu primeiro esquema de reamostragem. Se os preditores foram controlados ou os valores dos preditores foram definidos pelo experimentador, você pode considerar o uso de esquema de reamostragem residual / baseado em modelo / x fixo / segundo.
Como os dois diferem? Uma introdução ao bootstrap com aplicativos em R por Davison e Kounen tem uma discussão pertinente a esta questão (consulte a p.9). Veja também o código R em neste apêndice de John Fox , particularmente as funções boot.huber na p.5 para o esquema random-x e boot.huber.fixado em p.10 para o esquema de x fixo. Enquanto nas notas de aula de Shalizi os dois esquemas são aplicados a diferentes conjuntos de dados / problemas, o apêndice de Fox ilustra como a diferença que os dois esquemas podem fazer muitas vezes é pequena.
Quando se pode esperar que os dois entreguem resultados quase idênticos? Um situação é quando o modelo de regressão é especificado corretamente, por exemplo, não há não linearidade não modelada e as suposições de regressão usuais (por exemplo, erros de iid, sem outliers) são satisfeitas. Consulte capítulo 21 do O livro da Fox (ao qual o apêndice mencionado acima com o código R indiretamente pertence), particularmente a discussão na página 598 e exercício 21.3. intitulado “Reamostragem aleatória versus reamostragem fixa em regressão”.Para citar o livro
By randomly reattaching resampled residuals to fitted values, the [fixed-x/model-based] procedure implicitly assumes that the errors are identically distributed. If, for example, the true errors have non-constant variance, then this property will not be reflected in the resampled residuals. Likewise, the unique impact of a high-leverage outlier will be lost to the resampling.
Você também aprenderá com essa discussão porque o bootstrap com x fixo assume implicitamente que a forma funcional do modelo está correta (embora nenhuma suposição é feita sobre a forma da distribuição do erro).
Veja também slide 12 desta palestra para a Sociedade de Atuários da Irlanda por Derek Bain. Também contém uma ilustração do que deve ser considerado “o mesmo resultado”:
The approach of re-sampling cases to generate pseudo data is the more usual form of bootstrapping. The approach is robust in that if an incorrect model is fitted an appropriate measure of parameter meter uncertainty is still obtained. However re sampling residuals is more efficient if the correct model has been fitted. The graphs shows both approaches in estimating the variance of a 26 point data sample mean and a 52 point sample mean. In the larger sample the two approaches are equivalent.
boot.ci(my.boot, type="basic")
emR
). Ou estou perdendo alguma coisa aqui?rms
validate
ecalibrate
.