что эквивалентно SAS-параметрическим оценкам в R - PullRequest
0 голосов
/ 05 августа 2011

Пожалуйста, как это можно записать в R

proc glm data=DataTX;
class DAG;
by HID;
model Bwt = DAG/ss3 solution;
ods output parameterestimates =TX_BW_corrFact;

пробег;

Ответы [ 2 ]

1 голос
/ 05 августа 2011

Взгляните на lmList () из пакета lme4 или nlme

library(lme4)
lmList(Reaction ~ Days | Subject, sleepstudy)

Это меньше, чем решение Хонга.

grps <- split(sleepstudy, sleepstudy$Subject)
mods <- lapply(grps, function(x) lm(Reaction ~ Days, data=x))
sapply(mods, coef)
1 голос
/ 05 августа 2011

Для большинства целей в R эквивалент proc glm равен lm, что подходит для линейных моделей.Похоже, вы хотите получить оценочные коэффициенты из моделей, которые можно получить с помощью coef(mod), где mod - это объект, возвращаемый lm.

. Самый сложный бит - это репликация *Оператор 1008 *, который подходит для отдельных моделей для каждого уровня переменной by (в данном случае HID).Попробуйте что-то вроде этого.Я предполагаю, что вы уже импортировали ваш набор данных в R.

grps <- split(DataTX, DataTX$HID)
mods <- lapply(grps, function(x) lm(Bwt ~ DAG, data=x))
sapply(mods, coef)

Это разбивает DataTX на отдельные группы на основе HID.Затем для каждой группы подходит модель lm(Bwt ~ DAG).Затем в последней строке извлекаются подогнанные коэффициенты для каждой модели.

Это можно объединить в одну строку, но, оставив ее в виде 3 отдельных операторов, вероятно, будет легче следовать.коэффициенты не будут такими же, как у SAS, из-за различий в параметрах двух систем в модели.В частности, SAS по умолчанию обрабатывает последний уровень переменной класса / фактора как ссылку, а R использует первый.

...