【发布时间】:2013-08-12 09:11:52
【问题描述】:
我正在研究 Ridge 回归,我想创建自己的函数。它尝试了以下方法。它适用于 k 的单个值,但不适用于值序列的数组。
dt<-longley
attach(dt)
library(MASS)
X<-cbind(X1,X2,X3,X4,X5,X6)
X<-as.matrix(X)
Y<-as.matrix(Y)
sx<-scale(X)/sqrt(nrow(X)-1)
sy<-scale(Y)/sqrt(nrow(Y)-1)
rxx<-cor(sx)
rxy<-cor(sx,sy)
for (k in 0:1){
res<-solve(rxx+k*diag(rxx))%*%rxy
k=k+0.01
}
也需要优化代码方面的帮助。
【问题讨论】:
-
你能清理一下你的例子吗?我们不知道输入数据是什么,没有
Y,但是使用了Y,rid是由not used创建的,你的解释中没有提到k。也许这会有用:stackoverflow.com/q/5963269 -
@Bryan Hanso:代码已更新。 Longley 是默认数据集,但我使用的名称不同。您可以考虑任何数据集。
-
@itfeature.com 我们不想考虑任何数据集,我们想考虑你的。如果您需要帮助,如果我们能够运行您的示例,而无需代表我们花费任何额外的不必要的努力,那么您就有更好的机会。请对其进行编辑以使其正常工作。
-
需要优化哪些部分?您认为瓶颈是什么?
-
for (k in 0:1)将在第一遍使用 0,然后使用 1。k = k + 0.01不会按照您编写的方式执行任何操作,因为k来自for语句。也许您想要更多类似for (k in seq(0, 1, by = 0.01)的东西?并取出k = k + 0.1顺便说一句,您提供的是脚本而不是函数。
标签: r regression