Как рассчитать несколько коэффициентов 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. Мой ответ здесь просто чтобы исправить вашу ошибку.