Получение значений fhat 0 в моей двухсторонней функции сглаживания регрессии ядра - PullRequest
0 голосов
/ 02 октября 2018

Я написал функцию сглаживания регрессии ядра ниже.

#simulated data: b0 + b1x1 + b2x2 + e
x1 <- runif(100)
x2 <- runif(100)
y <- 5 + 7 * x1 + 5 * x2 + rnorm(100,0,.1)
sample <- cbind(x1, x2, y)
sample <- as.data.frame(sample)

Kregsmooth2 <- function(sample, h){
  output <- matrix(0, nrow = 100, ncol = 100)
  grid.x1 <- seq(min(sample$x1), max(sample$x1), length.out = 100)
  grid.x2 <- seq(min(sample$x2), max(sample$x2), length.out = 100)
  for (j in 1:length(grid.x2)){
    for (i in 1:length(grid.x1)){
      output[i,j] <- sum(sample$y * dnorm((grid.x1[i]-sample$x1)/h)) * sum(sample$y * dnorm((grid.x2[j]-sample$x2)/h)) / (sum(dnorm((grid.x1[i]-sample$x1)/h)) * sum(dnorm((grid.x2[j]-sample$x2)/h)))
    }
  return(list(x1 = grid.x1, x2 = grid.x2, output=output))
  }
}

fit <- Kregsmooth2(sample, 1)
fit

Когда я запускаю эту функцию, в моем выходном столбце заполняется только столбец [, 1].[, 2: 100] заполнены нулями.У меня такое ощущение, что я храню результаты, но не могу понять, почему у меня такая проблема.Любая помощь будет оценена, спасибо!

1 Ответ

0 голосов
/ 02 октября 2018

Вы ставите return внутри j -цикла.Переместите его ниже одного }.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...