Я написал функцию сглаживания регрессии ядра ниже.
#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] заполнены нулями.У меня такое ощущение, что я храню результаты, но не могу понять, почему у меня такая проблема.Любая помощь будет оценена, спасибо!