编写循环以进行向后选择

时间:2019-02-16 16:46:34

标签: r loops spline non-linear-regression

我正在尝试编写一个允许我进行向后选择的代码,但我不知道该怎么做。

基本思想如下: 我有一个结向量K,该向量用于使用软件包bs中的splines函数来构造基本函数。 我想做的是按照以下方式从向量K中消除一个结。 我删除向量的第i个观测值,即i = 1,2,...,length(K),用所得向量构建基础,并估计每个模型的平方余数和。之后,我用较小的RSS拾取一个,估计SIC并重新启动过程。

到目前为止,我所做的是:

library(splines)

x <- seq(0, 1, 1000)
y <- 2*sin(4*pi*x) - 6*abs(x - 0.4)^0.3 - 0.5*sign(0.7 - x) + rnorm(1000, 0, 0.1)
bound <- c(0, 1)
K <- seq(0, 1, length.out = 60)[-c(1, 60)]
for (i in 1:length(K))
    RSS[i] <- sum((y - lm(y ~ bs(x, knots = K[-i], Boundary.knots = bound, degree = 2, intercept = T) - 1)$fitted.values)^2)
K <- K[-which.min(RSS)

(这只是一次迭代,应重复此过程) 问题在于向量K的大小在每次迭代中都会变化,我真的不知道让R考虑一下(有点像在mathlab中将其设置为全局变量)。 在第二步中,我抓取这个“修剪的” K并重复该过程,删除第i个组件,选择一个最小化RSS的组件,并继续直到K的长度为零。

在每次迭代中,我还必须计算最小化RSS的模型的SIC。

SIC <- log(RSS[which.min(RSS)]) + log(n)*(length(K))/(2*n)

我还需要存储在每个步骤中选择的向量。

作为结果,我想获得的是一系列嵌套向量和每个向量的SIC值。

我正在努力寻找解决方案,但是我所有的尝试都失败了。

任何帮助将不胜感激。

0 个答案:

没有答案