2013-09-25 4 views
3

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

> coefficients(nodnox_loglm_model) 
$`(Intercept)` 
[1] 10.18939 

$w 
     0.05   0.1  0.15   0.2  0.25   0.3  0.35   0.4  0.45 
-1.04596513 -0.41193617 -0.08840858 0.06407334 -0.06862606 0.02999039 0.17084795 0.45838071 0.35307375 
     0.5 
0.53856982 

$s 
      2   3   4   5 
0.36697307 0.15164360 -0.48264571 -0.03597096 

и

> coefficients(nodnox_glm_model) 
(Intercept)   s3   s4   s5  w0.1  w0.15  w0.2  w0.25  w0.3 
    9.5104005 -0.2153295 -0.8496188 -0.4029440 0.6340290 0.9575566 1.1100385 0.9773391 1.0759555 
     w0.35  w0.4  w0.45  w0.5 
    1.2168131 1.5043458 1.3990389 1.5845350 

Я знаю, что эти два метода имеют разную численную процедуру - я не забочусь о том, что - все, что я хочу знаете, как я могу связать коэффициенты glm с коэффициентами loglm?

Все, что я нашел в Интернете и документации, которую я искал, прежде чем приходить к StackOverflow этого примечание:

GLM коэффициент таблица работает так же, как резюме для ANOVA производимых лм: уровень по алфавиту первой (s2, w0.5) используется как перехват , и все последующие уровни тестируются на первый (таким образом, остальные коэффициенты являются отличиями от среднего значения, а не ).

Для меня этого недостаточно, чтобы понять, как получить коэффициенты из выхода glm в виде loglm. Теперь ваш вопрос может быть следующим: «Почему бы не использовать loglm напрямую?» Loglm не работает в моем случае (это не тот, который я сравниваю здесь, но он имеет 5-мерную таблицу с некоторыми нулями. Поэтому, если я использую loglm в исходной таблице, она дает мне все коэффициенты как NaN) , Поэтому я застрял с glm, и я действительно хочу получить коэффициенты, как в loglm.

Большое спасибо!

ответ

4

Кажется, у вас есть двухсторонний кросс-стол с 10 уровнями фактора w и 5 уровнями фактора s без взаимодействия в модели. С glm() стандартная схема кодирования для категориальных переменных равна treatment coding, где первая группа в коэффициенте является эталонным уровнем, а соответствующий параметр каждой оставшейся группы - это ее отличие от этой ссылки. Оценка (Intercept) предназначена для ячейки со всеми группами = опорный уровень для их коэффициента.

С loglm() параметры предназначены для кодирования отклонений, что означает, что каждая группа получает свой собственный параметр, а параметры для одной факторной суммы равны нулю. (Intercept) - это великое средство, которое добавляется ко всем групповым эффектам.

В вашем примере, вы могли бы сказать glm() использовать кодирование девиации, чтобы получить те же оценки параметров, как с loglm() (см пример ниже), либо преобразовать оценки параметров от кодирования для обработки следующим образом:

  • w = 0,05 и s = 2 является опорной ячейки: glm() 9,5104005 = loglm() 10,18939 + -1,04596513 + 0,36697307
  • w = 0,1 и s = 2 опорный уровень для s, но нуждается в отличие от w = 0,1 к опорному w = 0,05: glm() 9,5104005 0,6340290 + = loglm() 10,18939 + -0,41193617 + 0,36697307
  • w = 0.1 и s = 3, но нуждается в отличие от w = 0,1 в качестве ссылки w = 0,05 и отличие от s = от 3 до ссылки s = 2: glm() 9,5104005 0,6340290 + + -0,2153295 = loglm() 10,18939 + -0,41193617 + 0.15164360, и так далее

glm() примера с использованием кодирования отклонение (UCBAdmissions является кросс-таблица абсолютных частот, встроенные в базовую R):

> library(MASS)        # for loglm() 
> llmFit <- loglm(~ Admit + Gender + Dept, data=UCBAdmissions) 
> coef(llmFit) 
$`(Intercept)` 
[1] 5.177567 

$Admit 
    Admitted Rejected 
-0.2283697 0.2283697 

$Gender 
     Male  Female 
0.1914342 -0.1914342 

$Dept 
      A   B   C   D   E   F 
0.23047857 -0.23631478 0.21427076 0.06663476 -0.23802565 -0.03704367 

> UCBdf <- as.data.frame(UCBAdmissions) # convert to data frame for glm() 
> glmFit <- glm(Freq ~ Admit + Gender + Dept, family=poisson(link="log"), 
+    contrasts=list(Admit=contr.sum, Gender=contr.sum, Dept=contr.sum), 
+    data=UCBdf) 
> coef(glmFit) 
(Intercept)  Admit1  Gender1  Dept1  Dept2  Dept3  Dept4 
5.17756677 -0.22836970 0.19143420 0.23047857 -0.23631478 0.21427076 0.06663476 
     Dept5 
-0.23802565 

glm() Обратите внимание, что не список этих параметров ES сроки, которые полностью определены (сглажены) через ограничение суммы к нулю для параметров для одного фактора.

 Смежные вопросы

  • Нет связанных вопросов^_^