Как рассчитать несколько коэффициентов R одновременно?

У меня есть набор данных (PAEscore) 1672 записей на столбец (38 участников, 44 наблюдения на участника). Я хочу взглянуть на Fraction_Value против Subject_Fraction и кодировать часть скрипта, которая даст мне коэффициент R для каждого предмета. В загруженных мною данных есть столбец для номера субъекта, столбец для значения дроби и столбец для дроби субъекта. Пока у меня есть код, который даст мне график и значение R для объединенных данных всех 38 участников:

fit1 <- lm(Fraction_Value ~ Subject_Fraction) 

summary(fit1)

plot(Fraction_Value ~ Subject_Fraction)
abline(fit1)

Тем не менее, у меня много проблем с запуском цикла, который даст мне таблицу, содержащую отдельные значения R для каждого участника. Я пробовал это, и это не работает.

PAEcoeff = matrix()

for (i in levels(PAEscore$Subject_ID)) {
  # Create temporary data frame:
     PAE_tmp  <- PAEscore[PAEscore$Subject==i,]
  # Perform regression:
      reg_result <- lm(PAE_tmp$Fraction_Value ~ PAE_tmp$Subject_Fraction)
 # Get coefficient:
      tmp_coef   <- coef(reg_result)
  # Store coefficient:
     PAEcoeff[as.numeric(i)] <- tmp_coef[2]
}

Ребята, есть ли у вас какие-либо советы, как я могу это исправить? Я не получаю никаких ошибок, когда я запускаю это, но я просто получаю пустую таблицу. Что мне не хватает? Или есть более простой способ сделать это?

1 ответ

Решение

Мой ответ предполагает, что PAEscore$Subject_ID скорее фактор, чем персонаж (в противном случае levels(PAEscore$Subject_ID дает NULL а твоя петля ничего не делает!)

Ваш счетчик циклов i через уровни, так что это будет символьная строка. Приведение к числовому с as.numeric(i) дает NA,

Починить это. Вне цикла инициализируйте

PAEcoeff <- setNames(numeric(nlevels(PAEscore$Subject_ID)), levels(PAEscore$Subject_ID))

Затем внутри цикла используйте PAEcoeff[i],

Есть ли более простой способ сделать это?

Вы подбираете линейную регрессию по группам. Я предлагаю вам прочитать линейную регрессию и сгруппировать в R. Мой ответ здесь просто чтобы исправить вашу ошибку.

Другие вопросы по тегам