R реализация коэффициента частичного определения

9

У кого-нибудь есть предложения или пакеты, которые рассчитают коэффициент частичного определения?

Коэффициент частичного определения может быть определен как процент вариации, который не может быть объяснен в сокращенной модели, но может быть объяснен предикторами, указанными в полной (эр) модели. Этот коэффициент используется для того, чтобы понять, могут ли один или несколько дополнительных предикторов быть полезны в более полной модели регрессии.

Расчет для частичного r ^ 2 является относительно простым после оценки ваших двух моделей и генерации таблиц ANOVA для них. Расчет для частичного г ^ 2:

(SSEreduced - SSEfull) / SSEreduced

Я написал эту относительно простую функцию, которая вычислит это для модели множественной линейной регрессии. Я не знаком с другими модельными структурами в R, где эта функция может работать не так хорошо:

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)

    }

Будем весьма благодарны за любые предложения или советы по более надежным функциям для выполнения этой задачи и / или более эффективным реализациям приведенного выше кода.

гнаться
источник
2
Я предлагаю попробовать другие модели и посмотреть, работает ли код или нет. R обычно хорош, поэтому anova должна возвращать похожие вещи для разных моделей. Проблема с вашей первоначальной формулой. Это подходит для других моделей? Если это не так, то нет смысла заставлять код работать, более того, код должен выдавать предупреждение о том, что он используется для моделей, где формула не выполняется.
mpiktas
Я действительно не вижу вопроса. Вам нужна функция, которая вычисляет частичное R2, но у вас уже есть такая. Знаете ли вы чувствительность пакета (нет частичного R2, но реализован pcc, который является частным случаем)?
Робин Жирар
@robin - Я прошу прощения, если мой вопрос не был ясен. Я заинтересован в том, чтобы найти пакет, который содержит эти вычисления (поскольку он, вероятно, содержит много других полезных функций, которые будут полезны) и / или предложения о том, как улучшить функцию, которую я написал выше. Очевидно, что отсутствует проверка ошибок, и она может быть неприменима для всех типов моделей.
Погоня
Я предлагаю перенести этот вопрос в SE. В основе вопроса, похоже, лежит проблема реализации, а не статистическая.
Каракал
@ Каракал - все, что вы считаете нужным. Я знаю, что было довольно много дискуссий о том, где должна быть проведена грань в песке между SO и CV относительно вопросов, связанных с R. У меня нет сильных предпочтений в любом случае. Моя работа окончательно отвела меня от этой конкретной проблемы, но я вернусь к ней еще раз в ближайшие недели, поэтому я сам смогу найти лучшее решение. Я также прекрасно позволю этому вопросу исчезнуть в эфире ...
Погоня

Ответы:

0

Что ж, r ^ 2 - это на самом деле просто ковариация в квадрате над произведением дисперсий, так что вы, вероятно, могли бы сделать что-то вроде cov (Yfull, Ytrue) / var (Ytrue) var (Yfull) - cov (YReduced, Ytrue) / var (Ytrue) ) var (YRed) независимо от типа модели; проверьте, чтобы убедиться, что дает тот же ответ в случае lm, хотя.

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

Патрик Макканн
источник