У меня возникли проблемы с этим кодом, цель которого - запустить регрессию для разных блоков, каждый из которых имеет 161 точку данных. Похоже, что он не принимает во внимание все значения number_of_regressions, которые представляют собой последовательность чисел от 0 до 86 на 1.
Ошибка: ошибка в x [[jj]] <- v: попытка выбрать менее одного элемента в integerOneIndex
n <- 161
# Creates a sequence of numbers to replace i in the for loop
number_of_regressions <- c(0:86) # (from 0 to 86)
# Regression
for(i in number_of_regressions) {
Regression <- lm(y ~ x + z, data = Data[(1+n*i):(n*(i+1)),])
Intercept[i] <- summary(Regression)$coefficients[1,1]
x[i] <- summary(Regression)$coefficients[2,1]
}
Цель состоит в том, чтобы запустить несколько регрессий от первой точки данных до 161-й, а затем от 162 до 322, это означает создание перемещаемых блоков по 161 точку данных в каждой из них.
Я ценю любую помощь.
1 ответ
Вы можете попробовать что-то вроде этого, в основном настройте data.frame, первый столбец - это то, что вы повторяете:
Data = data.frame(matrix(rnorm(150000),ncol=3))
colnames(Data) = c("x","y","z")
results = data.frame(n=0:86,Intercept=NA,x=NA)
n <- 161
number_of_regressions <- c(0:86)
for(i in number_of_regressions) {
Regression <- lm(y ~ x + z, data = Data[(1+n*i):(n*(i+1)),])
results[results$n==i,c("Intercept","x")] = summary(Regression)$coefficients[1:2,1]
}
Похожие вопросы
Новые вопросы
r
R - это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, предоставьте минимальные и воспроизводимые примеры вместе с желаемым результатом. Используйте dput () для данных и укажите все небазовые пакеты с вызовами library (). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. По вопросам, связанным со статистикой, используйте https://stats.stackexchange.com.