R implementação do coeficiente de determinação parcial

9

Alguém tem sugestões ou pacotes que calcularão o coeficiente de determinação parcial?

O coeficiente de determinação parcial pode ser definido como o percentual de variação que não pode ser explicado em um modelo reduzido, mas pode ser explicado pelos preditores especificados em um modelo completo (er). Esse coeficiente é usado para fornecer informações sobre se um ou mais preditores adicionais podem ou não ser úteis em um modelo de regressão mais completamente especificado.

O cálculo para o r ^ 2 parcial é relativamente direto depois de estimar seus dois modelos e gerar as tabelas ANOVA para eles. O cálculo para o r ^ 2 parcial é:

(SSEreduced - SSEfull) / SSEreduced

Eu escrevi essa função relativamente simples que calculará isso para um modelo de regressão linear múltipla. Não estou familiarizado com outras estruturas de modelo em R, onde essa função pode não funcionar tão bem:

partialR2 <- function(model.full, model.reduced){
    anova.full <- anova(model.full)
    anova.reduced <- anova(model.reduced)

    sse.full <- tail(anova.full$"Sum Sq", 1)
    sse.reduced <- tail(anova.reduced$"Sum Sq", 1)

    pR2 <- (sse.reduced - sse.full) / sse.reduced
    return(pR2)

    }

Serão muito bem-vindas quaisquer sugestões ou dicas sobre funções mais robustas para realizar esta tarefa e / ou implementações mais eficientes do código acima.

correr atrás
fonte
2
Sugiro tentar os outros modelos e ver se o código funciona ou não. R geralmente é bom, portanto a anova deve retornar coisas semelhantes para diferentes modelos. O problema está na sua fórmula inicial. Isso vale para outros modelos? Caso contrário, não faz sentido que o código funcione; além disso, o código deve emitir um aviso de que é usado para modelos em que a fórmula não é válida.
Mvctas # 02/03
Eu realmente não vejo a pergunta. Você deseja uma função que calcule R2 parcial, mas já possui uma. Você conhece a sensibilidade do pacote (não há R2 parcial, mas o pcc, que é um caso específico, é implementado)?
robin Girard
@robin - peço desculpas se minha pergunta não estava clara. Estou interessado em encontrar um pacote que contenha esse cálculo (pois provavelmente contém muitas outras funções úteis que seriam úteis) e / ou sugestões sobre como melhorar a função que escrevi acima. Obviamente, falta uma verificação de erro e pode não ser aplicável a todos os tipos de modelo.
Chase
Sugiro que esta questão seja migrada para o SE. O cerne da questão parece ser um problema de implementação, não estatístico.
caracal
@caracal - o que você achar melhor. Eu sei que houve uma boa quantidade de discussões sobre onde a linha na areia deve ser traçada entre SO e CV em relação a questões relacionadas a R. Eu não tenho uma forte preferência de qualquer maneira. Meu trabalho me afastou desse problema específico pela última parte, mas o revisitaremos novamente nas próximas semanas, para que eu mesmo possa encontrar uma solução melhor. Eu também estou muito bem deixar o fade questão fora no éter ...
perseguição

Respostas:

0

Bem, r ^ 2 é realmente apenas covariância ao quadrado sobre o produto das variações, então você provavelmente poderia fazer algo como cov (Yfull, Ytrue) / var (Ytrue) var (Yfull) - cov (YReduced, Ytrue) / var (Ytrue ) var (YRed) independentemente do tipo de modelo; verifique se a resposta é a mesma no caso lm.

http://www.stator-afm.com/image-files/r-squared.gif

Patrick McCann
fonte