Я пытаюсь создать скрипт, который выводит таблицу скорректированных значений r-квадрата для каждой комбинации из восьми входных переменных модели множественной линейной регрессии.
Я попытался это сделать, создав каждую комбинацию имен столбцов в моем фрейме данных и конкатенировав эти строки со знаком «+» и сохранив каждое из них в векторе. Затем я прокрутил каждый из них, получил откорректированное значение r-квадрата и сохранил их в новом векторе. Фрейм данных, который я использовал, называется WasteData.
my.vars <- matrix(0, ncol=8, nrow=)
my.vars <- t(matrix(noquote(colnames(WasteData[2:9]))))
sum.vars <- rep("", 255)
r.2 <- rep(0, 255)
comb.mat <- matrix(numeric(0), nrow=8, ncol=0)
for ( i in 1:8 ) {
t.mat <- combn(my.vars, m=i)
comb.mat <- cbind(comb.mat, rbind(t.mat, matrix("", ncol=dim(t.mat)[2] , nrow=8-i)))
}
for ( j in 1:dim(comb.mat)[2] ) {
lim = 0
for (i in 1:8) {
if(comb.mat[i,j] == "") {
lim = i-1
break;
}
}
temp = comb.mat[1:lim,j]
sum.vars[j] = paste(temp, collapse = " + ")
sum.vars[dim(comb.mat)[2]] = "INDUS + METAL + WHOLE + RETAIL + REST + FINAN + MISC + HOME" #this line shows each of the eight variables
r.2[j] = summary(lm(WASTE ~ noquote(sum.vars[j]), WasteData))$adj.r.squared
}
Вектор sum.vars компилируется правильно, давая мне каждый правильный аргумент справа от «~» в линейной модели, но как только я запускаю lm, я получаю следующую ошибку:
Ошибка в model.frame.default (формула = WASTE ~ noquote (sum.vars [j]), data = WasteData,:
переменные длины различаются (найдено для «noquote (sum.vars [j])»)