Ошибка в x [[jj]] <- v: попытка выделить менее одного элемента в integerOneIndex - PullRequest
2 голосов
/ 15 апреля 2020

У меня возникли проблемы с этим кодом, цель которого - запустить регрессии для разных блоков, каждый из которых имеет 161 точку данных. Кажется, что он не учитывает все значения number_of_regressions, который представляет собой последовательность чисел от 0 до 86 на 1.

Ошибка: ошибка в x [[jj]] <- v: попытки выбрать менее одного элемента в integerOneIndex </p>

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 Ответ

0 голосов
/ 15 апреля 2020

Вы можете попробовать что-то вроде этого, в основном настроить 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]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...