сохранить коэффициенты lmlist и остатки в набор данных

У меня есть 100 групп по 40 наблюдений в каждой. Я знаю, что могут быть и другие подходящие модели, но в настоящее время меня интересует только следующее.

reg<-lmList(Y ~ Intercept + a + b + c + d | grp,data=data, pool=F)

Чтобы сохранить остатки (из lmList) в мою таблицу, я просто делаю

data$residual <- residuals(reg)

Теперь я хочу также сохранить бета-коэффициенты в исходной таблице. Поскольку каждая группа имеет только один набор коэффициентов, они должны быть одинаковыми для группы, но разными для разных групп.

  • coef <- coef(reg) дает мне список с групповыми коэффициентами. Однако R показывает это как список только с 5 столбцами (исключая имена групп).
  • data$coef<-coef[,c(1) ] дает мне перехваты, но я теряю информацию о группе.

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

Если есть более простой способ сделать это, пожалуйста, помогите.


person oblixram    schedule 25.05.2016    source источник
comment
воспроизводимый пример поможет stackoverflow.com/questions/5963269/   -  person Bulat    schedule 26.05.2016


Ответы (1)


Если fm1 является вашим подогнанным объектом lmList, то я думаю, что простое преобразование имен строк в дополнительный столбец должно делать то, что вы хотите:

library(nlme)
fm1 <- lmList(distance ~ age | Subject, Orthodont)
res <- data.frame(Subject=rownames(coef(fm1)),coef(fm1),check.names=FALSE)
rownames(res) <- NULL ## now redundant
head(res)
  Subject (Intercept)   age
1 M16           16.95 0.550
2 M05           13.65 0.850
...

Тогда вы должны быть в состоянии merge() (хотя слияние с объектом Orthodont кажется проблематичным - я думаю, это может быть потому, что это странный объект groupedData...)

person Ben Bolker    schedule 25.05.2016
comment
Большое спасибо. Работал как шарм. - person oblixram; 26.05.2016