Провести многомерную регрессию на каждом n-м ряду кадра данных в R - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть фрейм данных с 376 столбцами и 2700 строками, с 270 строками, соответствующими каждому предмету (следовательно, в этом случае есть 10 предметов). Каждые 270 строк представляют собой данные одного субъекта (т.е. 1: 270 - субъект 1; 271: 540 - субъект 2).

У меня есть отдельный фрейм данных (2700 x 8) с моими независимыми переменными, еще раз 270 строк по каждому предмету.

Я рассчитываю регрессировать 8 IV из моих 376 DV и получить остатки. Сложность для меня в том, что я хочу провести регрессию отдельно для каждого субъекта (то есть отдельную регрессию для каждых 270 строк). Вот некоторые смоделированные данные ниже:

DV = matrix(rnorm(2700*376),ncol=376) #construct matrix for dependent variables

IV =  matrix(rnorm(2700*8),ncol=8) #matrix for independent variables

Чтобы получить остатки от данных в целом, я просто сделал бы

resid = residuals(lm(DV~IV))

Но как бы я адаптировал это, чтобы сделать это так что регрессия выполняется для каждого субъекта (на каждые 270 строк)? Легче ли было объединить мои фреймы данных IV и DV?

Я новичок в R, и любая помощь очень ценится, спасибо.

1 Ответ

0 голосов
/ 10 февраля 2020

Предложение с использованием для l oop и базы R:

result_list <- NULL
first <- 1
for (i in 1:10) {
  last <- i * 270
  this_subjects_results <- residuals(lm(DV[first:last,] ~ IV[first:last,]))
  result_list <- list(result_list, this_subjects_results)
  first <- last + 1
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...