2014-11-22 2 views
2

Мне нужно проверить, какие эффекты я должен включить в свою модель для генетической оценки коров. В SAS я бы использовал proc GLM. Код SAS будет:Proc GLM (SAS) с использованием R

data paula1; set paula0; 
proc glm; 
class year herd season; 
model milk= year herd season age age*age; 
run; 

Мой R код:

model1 = glm(milk ~ factor(year) + factor(herd) + factor(season) + age + I(age^2), data=paula1) 
anova(model1) 

Я подозреваю, что есть что-то неправильно, потому что все эффекты являются статистически значимыми, даже когда я включаю другие эффекты, которые не связаны с черта. У меня нет лицензии SAS для сравнения результатов. Правильно ли мой код в R? Имеет ли glm в R сумма квадратов 3-го типа (для несбалансированных данных, представленных в SAS)? Есть ли разница в этом случае для использования lm? Спасибо заранее. Paula

+1

Вы должны прочитать это, особенно связанный pdf, почему у сообщества R есть сильные чувства по поводу так называемого типа III SS: http://stats.stackexchange.com/a/23198 – joran

+1

Короткий ответ на «тип III»: Нет. Вы просите нас прокомментировать methds для статистического теста, когда вы не предоставили никаких данных. Не совсем вопрос кодирования, не так ли ?. Если вы хотите задать вопрос о статистике, вы должны перейти на CrossValidated.com. –

ответ

5

Это очень распространенная ошибка между пользователями SAS и R.

Пакет glm в SAS отличается от функции glm в R, и я объясняю ниже.

This для SAS с официального сайта: «Процедура GLM использует метод наименьших квадратов для соответствия общим линейным моделям». GML в SAS сокращенно Общие линейные модели. Они полностью отличаются от Обобщенные линейные модели, что и вычисляет функция GML в R.

This для функции GLM в R: "Обобщенные линейные модели так же легко помещается в R, как обычную линейную модель В самом деле, они требуют только дополнительный параметр для определения дисперсии и функции канального Основной.. инструмент для подгонки обобщенных линейных моделей является функция GLM, которая имеет folllowing общую структуру:

glm(formula, family, data, weights, subset, ...) "

в общем, общие линейные модели используют метод обычным методом наименьших квадратов для оценивания параметров, в то время как обобщенные линейные модели используют оценка максимального правдоподобия для оценки параметров. Обобщенные линейные модели также «позволяют линейной модели быть связаны с переменной отклика посредством функции связи и позволяют оценить величину отклонения каждого измерения от его прогнозируемого значения» (взято из википедии here) «

Чтобы закончить мою длинную речь, вам нужно использовать функцию lm в R, которая, как и таблица ANOVA, даст вам те же результаты, что и пакет GLM в SAS. Для ошибки типа III проверьте точные комментарии joran и BondedDust.

Надеюсь, это поможет!

+0

Большое спасибо @LyzandeR. – PaulaF

1

Процедура SAS, которая соответствует R-glm, является GENMOD.

Правильный способ ввода полиномиальных терминов в регрессионных моделях R состоит в использовании poly. Прочтите справочную страницу ?poly. Для ортогонального полинома квадратичной степени:

lm(milk ~ year + herd + season + poly(age, 2), data=dat) 

Вы специально не должны использовать `возраст + I (возраст^2), так как эти два условия будут иметь высокую степень корреляции, и вы получите ошибочные выводы о значении одного или более порядков полиномов.

Если существует неопределенность в отношении класса столбцов, так что они не являются символом или фактором или логическими, тогда вам может понадобиться обернуть вокруг них factor(.), как показано на примере LyzandeR, но обычно это необходимо, только если термин имеет тип -'numeric.

Если по какой-либо причине, например, отсутствие образования начальства по поводу ошибок типа III, вам необходимо их использовать, а затем посмотрите на пакет автомобилей, в котором есть средства для их производства.

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