Чао, у меня есть несколько столбцов, в которых представлены оценки. Я хочу оценить модели, в которых каждый СЧЕТ является функцией ВРЕМЕНИ ИЗУЧЕНИЯ. Итак, я хочу запустить столько моделей, сколько столбцов SCORE - все простые модели, которые являются функциями STUDYTIME. Затем я хочу сохранить коэффициенты STUDYTIME в новом столбце с именами строк, равными имени столбца SCORE. И, наконец, я не уверен, как выполнить кластеризацию на линейных моделях, потому что СТУДЕНТЫ присутствуют в данных два раза.
Вот мой повторяющийся пример. Вот данные, которые у меня есть сейчас:
df <- data.frame(replicate(5, rnorm(10)))
df[1]<-c(1,1,2,2,3,3,4,4,5,5)
colnames(df) <- c('student','studytime', 'score1','score2','score3')
Это моя попытка кодирования:
for (i in 1:nrow(df)) {
dfx <- df[,i]
lm <- lm(dfx[,3:5] ~ study_time)
resdat[,i] = summary(lm)$coefficients[2]
}
Вы можете сделать это, просто используя функцию lapply
и sapply
.
Вот код r:
Создание данных
df <- data.frame(replicate(5, rnorm(10)))
df[1]<-c(1,1,2,2,3,3,4,4,5,5)
colnames(df) <- c('student','studytime', 'score1','score2','score3')
Сохранение результатов
Results <- lapply(df[, -c(1,2)], FUN = function(x) lm(x ~ df$studytime))
Coef <- sapply(Results, FUN = coefficients)
Просто поменяйте местами зависимые и независимые переменные.
Это отличный @Neeraj. Наконец, что, если необходимо сохранить p-значение и остаток. Я попробовал остаток lm $, но это не сработало
Результат сохраняет вывод каждой регрессии в списке. Просто подберите то, что вам нужно, используя функцию lapply
или sapply
.
Нирадж: на самом деле это наоборот. Я хочу регрессировать переменные SCORE во время учебы.