Inferência de regressão robusta e estimadores Sandwich

10

Você pode me dar um exemplo do uso de estimadores sanduíche para realizar inferência de regressão robusta?

Eu posso ver o exemplo em ?sandwich, mas não entendo bem como podemos passar de lm(a ~ b, data)( codificado para ) para uma estimativa e um valor de p resultante de um modelo de regressão usando a matriz de variância-covariância retornada pela função sandwich.

Remi.b
fonte
você já passou pelos exemplos da vinheta associada ?
user603
(1) O link funciona para mim. (2) Esta é uma pergunta de codificação r? Como obter o Huber-White SE após a montagem de um modelo. Ou alguma outra coisa?
charles
@charles 1) De fato funciona! Não sei o que aconteceu antes. Sim, é uma pergunta de codificação R. 2) Não sei o que são os Erros Padrão Huber-White e não sei como calculá-los agora. Obrigado pela ajuda!
Remi.b
Você obtém valores-p e erros padrão da mesma maneira que o habitual, substituindo a estimativa sanduíche da matriz de variância-covariância pela menor dos quadrados.
Scortchi - Restabelece Monica
@Scortchi Ok. E depois de ter essas estimativas (OLS ou estimativas sanduíche), o que posso fazer com elas?
Remi.b 19/11/2013

Respostas:

9

Eu acho que existem algumas abordagens. Eu não olhei para todos eles e não tenho certeza qual é o melhor:

  1. O sandwichpacote:

    library(sandwich)    
    coeftest(model, vcov=sandwich)
    

Mas isso não me dá as mesmas respostas que recebo da Stata por algum motivo. Eu nunca tentei descobrir o porquê, apenas não uso este pacote.

  1. O rmspacote: acho isso um pouco trabalhoso, mas geralmente recebo boas respostas com algum esforço. E é o mais útil para mim.

    model = ols(a~b, x=TRUE)    
    robcov(model)
    
  2. Você pode codificá-lo do zero (consulte esta postagem do blog ). Parece a opção mais dolorosa, mas notavelmente fácil e essa opção geralmente funciona melhor.

Uma explicação simples / rápida é que o Huber-White ou o Robust SE são derivados dos dados e não do modelo e, portanto, são robustos a muitas suposições do modelo. Mas, como sempre, uma rápida pesquisa no Google explicará isso com detalhes excruciantes, se você estiver interessado.

Charles
fonte
Você realmente deve ver esta resposta aqui: stats.stackexchange.com/a/117066/12053
Chandler
2
É como a forma como essas respostas assumem implicitamente que há algo errado com o R, porque você obtém resultados diferentes do Stata. Para pessoas que sabem como os estimadores de sanduíches funcionam, a diferença é óbvia e fácil de remediar. Para pessoas que não sabem, basta ler a vinheta (guia) que acompanha o pacote
Repmat
10

Pode-se usar uma função de resumo alternativa para executar uma regressão robusta.

lm.object <- lm(a~b+c)
summary(lm.object, robust=TRUE)

Para obter erros padrão robustos, defina o parâmetro '' robust '' em sua função de resumo como TRUE.

A seguinte entrada de blog fornece a função e uma descrição detalhada da função: https://economictheoryblog.com/2016/08/08/robust-standard-errors-in-r

Daniel Kah
fonte