2016-03-25 11 views
1

Что такое атрибут линейной модели assign? Предполагается, что он каким-то образом обеспечивает положение термина ответа, но на практике он, как представляется, перечисляет все коэффициенты в модели. Я понимаю, что assign является переносом от S и не поддерживается glm(). Мне нужно извлечь эквивалентную информацию для glm, но я не понимаю, что делает реализация для lm и, похоже, не может найти исходный код. Файл справки для lm.fit говорит, беспомощно:

ненулевыми припадки будут иметь компоненты assign, effects и (если не испрашивается) qr относящиеся к линейной аппроксимации, для использования вытяжных функций, таких как summary и effects

ответ

5

Вы найдете это в help("model.matrix"), который создает эти значения:

Существует атрибут «назначить», в МЭГ er с позицией для каждая колонка в матрице, дающая член в формуле, которая дала , поднималась к колонке. Значение 0 соответствует перехвату (если есть) и положительным значениям в терминах в порядке, заданном термином.labels атрибут структуры терминов, соответствующий объекту.

Таким образом, он отображает матрицу дизайна в формулу.

+0

Краткая и сладкая! Очень полезно!!!!! – rimorob

+0

нелепо, что это не упоминается _at all_ в '? Lm' ... пришлось потратить 20 минут, чтобы отслеживать, откуда в первую очередь происходит« присваивание ». – MichaelChirico

2

Номера от $assign представляют соответствующую переменную-предиктор. Если ваш предиктор категоричен с 3 уровнями, вы увидите соответствующее число (3-1) раз в вашем вызове $assign. Пример:

data(mpg, package = "ggplot2") 
m = lm(cty ~ hwy + class,data = mpg) 
m$assign 
    [1] 0 1 2 2 2 2 2 2 
# Note how there is six 2's to represent the indicator variables 
# for the various 'class' levels. (class has 7 levels) 

Вы увидите количественные предикторы будет иметь только одно значение (hwy в приведенном выше примере), так как они представлены одним членом в формуле дизайна.

+0

Где код, который вычисляет это поле? Я не мог найти его до сих пор. – rimorob

+0

А, я вижу проблему сейчас. Нечетно, что '$ assign' не находится в исходном коде для' lm' или 'glm'. Я пока не нашел, но я буду продолжать смотреть. – cgage

+1

Посмотрите в исходном коде 'stats ::: lm.fit'. – Roland