Como faço para comparar as inclinações de regressão com bootstrap?

13

Vamos supor que eu tenha dois conjuntos de dados com n observações de pares de dados da variável independente x e variável dependente y cada. Vamos supor ainda que eu quero gerar uma distribuição de inclinações de regressão para cada conjunto de dados, inicializando as observações (com substituição) N vezes e calculando a regressão y = a + bxcada vez. Como comparo as duas distribuições para dizer que as inclinações são significativamente diferentes? Um teste U para testar a diferença entre as medianas das distribuições seria fortemente dependente de N, ou seja, quanto mais repetir o bootstrap, mais significativa será a diferença. Como tenho que calcular a sobreposição entre as distribuições para determinar uma diferença significativa?

user7417
fonte

Respostas:

19

O bootstrap é feito para obter uma imagem mais robusta da distribuição de amostras do que aquela assumida pela teoria de grandes amostras. Quando você inicializa, efetivamente não há limite para o número de `exemplos de botas '; de fato, você obtém uma melhor aproximação da distribuição amostral quanto mais amostras de botas você usa. É comum a utilização B=10,000 bootsamples, embora não há nada mágico sobre esse número. Além disso, você não executa um teste nas amostras de botas; você tem uma estimativa da distribuição da amostra - use-a diretamente. Aqui está um algoritmo:

  1. tire uma amostra inicial de um conjunto de dados amostrando observações de inicialização com substituição. [Com relação aos comentários abaixo, uma pergunta relevante é o que constitui uma 'observação de inicialização' válida para usar na sua amostra de botas. De fato, existem várias abordagens legítimas; Mencionarei dois que são robustos e permitem que você espelhe a estrutura dos seus dados: Quando você tem dados observacionais (ou seja, os dados foram amostrados em todas as dimensões, uma observação de inicialização pode ser uma n-tupla ordenada (por exemplo, uma linha do seu conjunto de dados.) Por exemplo, se você tiver uma variável preditora e uma variável de resposta, poderá amostrar n 1 ( x , y )n1n1 (x,y)pares ordenados. Por outro lado, ao trabalhar com dados experimentais, os valores das variáveis ​​preditivas não foram amostrados, mas as unidades experimentais foram atribuídas aos níveis pretendidos de cada variável preditora. Em um caso como esse, é possível amostrar y valores de cada um dos níveis j da sua variável preditora e, em seguida, emparelhar esses y s com o valor correspondente desse nível preditivo. Dessa maneira, você não coletaria amostras sobre o X. ]n1j yjyX
  2. se encaixam no seu modelo de regressão e armazenar a estimativa inclinação (chamemos-lhe p 1 )β^1
  3. pegue uma amostra inicial de outros dados configurados amostrando observações de inicialização com substituiçãon2
  4. caber outro modelo de regressão e armazenar a estimativa inclinação (chamemos-lhe p 2 )β^2
  5. formar uma estatística das duas estimativas (sugestão: utilizar a diferença inclinação β 1 - β 2 )β^1β^2
  6. armazene a estatística e despeje as outras informações para não desperdiçar memória
  7. Repetir os passos 1 - 6, vezesB=10,000
  8. classifique a distribuição de amostragem com inicialização de diferenças de inclinação
  9. calcule a% do bsd que se sobrepõe a 0 (o que for menor,% da cauda direita ou% da cauda esquerda)
  10. multiplique esse percentual por 2

A lógica desse algoritmo como teste estatístico é fundamentalmente semelhante aos testes clássicos (por exemplo, testes t), mas você não está assumindo que os dados ou as distribuições de amostragem resultantes tenham alguma distribuição específica. (Por exemplo, você não está assumindo a normalidade.) A suposição principal que você está fazendo é que seus dados são representativos da população da qual você amostrou / deseja generalizar. Ou seja, a distribuição da amostra é semelhante à distribuição da população. Observe que, se seus dados não estiverem relacionados à população em que você está interessado, você estará sem sorte.

Algumas pessoas se preocupam em usar, por exemplo, um modelo de regressão para determinar a inclinação, se você não estiver disposto a assumir a normalidade. No entanto, essa preocupação está errada. O teorema de Gauss-Markov nos diz que a estimativa é imparcial (isto é, centrada no valor verdadeiro), então está tudo bem. A falta de normalidade significa simplesmente que a verdadeira distribuição amostral pode ser diferente da distribuição teoricamente posta e, portanto, os valores de p são inválidos. O procedimento de inicialização fornece uma maneira de lidar com esse problema.

Duas outras questões relacionadas ao autoinicialização: Se as suposições clássicas forem atendidas, o autoinicializador é menos eficiente (ou seja, tem menos energia) do que um teste paramétrico. Segundo, o bootstrap funciona melhor quando você está explorando perto do centro de uma distribuição: meios e medianas são bons, quartis não tão bons, o boot do min ou max necessariamente falha. Em relação ao primeiro ponto, talvez você não precise inicializar sua situação; no que diz respeito ao segundo ponto, fazer o bootstrap na inclinação é perfeitamente adequado.

Repor a Monica
fonte
Embora eu pode muito bem estar errado, eu pensei que o bootstrap na regressão teve que ser sobre os resíduos, em vez de nos dados brutos, a ser validado ...
Xi'an
@ Xi'an, eu já estive errado antes de mim, mas não entendo por que você acha que apenas os resíduos de inicialização são válidos. A seção 9.5 de Efron & Tibshirani (1994) diz que "pares de bootstrapping são menos sensíveis a suposições do que resíduos de bootstrapping. O erro padrão obtido por pares de bootstrapping fornece respostas razoáveis, mesmo que [a estrutura de probabilidade do modelo linear] esteja completamente errada". A implicação é que a aplicação do bootstrap é mais robusta, embora eles impliquem que ele pode ser menos eficiente em alguns casos.
gung - Restabelece Monica
Minha preocupação com a inicialização dos pares é que você também incorpora a distribuição dos preditores, que geralmente é deixada de fora da imagem nos modelos lineares regulares. É por isso que eu sempre ensino meus alunos a inicializar apenas os resíduos.
Xi'an
@ Xi'an, esse é um ponto razoável, suponho que estava assumindo uma estrutura de dados observacional. Eu editei minha resposta para adicionar mais detalhes sobre essas preocupações. No entanto, não vejo como isso implica que os pares de inicialização sejam necessariamente inválidos.
gung - Restabelece Monica
Forçar um pareamento entre dois conjuntos independentes de dados é artificial e ineficiente. Você pode fazer muito melhor que isso!
whuber
4

si

yi=β0+β1xi+β2si+β3sixi+ϵi
β3 is the difference in slopes from the separate regressions:
E[yix,si=1]=(β0+β2)+(β1+β3)xiE[yix,si=0]=β0+β1xi.
You can bootstrap the distribution of β3 if you want or just use standard testing procedures (normal/t). If using analytical solutions, you need to either assume homoskedasticity across groups or correct for heteroskedasticity. For bootstrapping to be robust to this, you need to choose n observations randomly among the first group and n among the second, rather than 2n from the whole population.

If you have correlation among the error terms, you may need to alter this procedure a bit, so write back if that is the case.

You can generalize this approach to the seemingly unrelated regressions (SUR) framework. This approach still allows the coefficients for the intercept and the slope to be arbitrarily different in the two data sets.

Charlie
fonte
1
It's a good idea. But doesn't this also assume the two regressions have iid errors?
whuber
1
Bom ponto. Requer que não haja variações diferentes para os erros por grupo e que os erros não sejam correlacionados nos diferentes grupos.
Charlie
0

Fazer tudo em uma regressão é puro, e a suposição de independência é importante. Mas calcular as estimativas pontuais dessa maneira não requer variação constante. Experimente este código R;

x <- rbinom(100, 1, 0.5)
z <- rnorm(100)
y <- rnorm(100)
coef(lm(y~x*z))
coef(lm(y~z, subset= x==1))[1] - coef(lm(y~z, subset= x==0))[1]
coef(lm(y~z, subset= x==1))[2] - coef(lm(y~z, subset= x==0))[2]

Temos a mesma estimativa pontual de qualquer maneira. As estimativas de erro padrão podem exigir variação constante (dependendo de qual você usar), mas o bootstrap considerado aqui não usa erros padrão estimados.

hóspede
fonte
1
If you're going to test whether the difference of slopes is zero (as in @Charlie's reply, to which you seem to be following up), you need an accurate, valid estimate of standard errors. It doesn't matter whether you bootstrap that estimate or otherwise.
whuber