В настоящее время я выполняю множественный линейный регрессионный анализ для ряда зависимых переменных (почти 200) и хотел бы создать функцию, которая запускает это для заданного набора столбцов, а затем извлекает соответствующие оценки модели, например, бета-коэффициенты иp-значения.
Имитация данных:
df = data.frame(ID = c(1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011),
age = as.numeric(c('56', '43','59','74','61','62','69','80','40','55','58')),
sex = as.numeric(c('0','1','0','0','1','1','0','1','0','1','0')),
testscore_1 = as.numeric(c('23','28','30','15','7','18','29','27','14','22','24')),
testscore_2 = as.numeric(c('1','3','2','5','8','2','5','6','7','8','2')),
testscore_3 = as.numeric(c('18','20','19','15','20','23','19','25','10','14','12')),
education = as.numeric(c('5','4','3','5','2', '1','4','4','3','5','2')))
Что выглядит следующим образом:
ID age sex testscore_1 testscore_2 testscore_3 education
1 1001 56 0 23 1 18 5
2 1002 43 1 28 3 20 4
3 1003 59 0 30 2 19 3
4 1004 74 0 15 5 15 5
5 1005 61 1 7 8 20 2
6 1006 62 1 18 2 23 1
7 1007 69 0 29 5 19 4
8 1008 80 1 27 6 25 4
9 1009 40 0 14 7 10 3
10 1010 55 1 22 8 14 5
11 1011 58 0 24 2 12 2
Я нахожусь на этапе, когда у меня есть функция, которая работает:
lm_results <- lapply(df[,4:6], function(x) lm(x ~ age + sex + education,
data = df))
и я могу вывести оценки коэффициентов из этого:
Coefficient <- data.frame(coefficients = sapply(lm_results, getElement, name = "coefficients"))
, который возвращает коэффициент для каждой переменной-предиктора по каждой из переменных testscore_ *, хотя я не смогвывести p-значения из этих моделей:
P_values <- data.frame(p.values = sapply(lm_results, getElement, name = "qr"))
У кого-нибудь есть какие-либо предложения по решению этой проблемы?