【发布时间】:2020-09-21 21:27:51
【问题描述】:
我是编码新手,所以我仍然在处理循环、子集和数据框与矩阵等简单的事情。
我正在尝试为多变量 X(X1=Marker 1,X2=Marker,X3=Marker 3,...,X1333=Marker 1333)拟合一个岭回归,如第一张图片所示,作为预测变量Y,在第二张图片中。
我想计算不同调谐参数 λ(1 到 20 之间)的平方误差之和 (SSE)。我的代码如下:
#install.packages("MASS")
library(MASS)
fitridge <- function(x,y){
fridge=lm.ridge (y ~ x, lambda = seq(0, 20, 2)) #Fitting a ridge regression for varying λ values
sum(residuals(fridge)^2) #This results in SSE
}
all_gcv= apply(as.matrix(genmark_new),2,fitridge,y=as.matrix(coleslev_new))
}
但是,它返回此错误,我不知道该怎么办了。我试过将数据集转换成矩阵、数据框、改变行列顺序……
Error in colMeans(X[, -Inter]) : 'x' must be an array of at least two dimensions.
我只想从单行(第一张图片)中获取每个标记值,将它们传递给我的 fitridge 函数,该函数根据第二个数据集(在第二张图片中)的 Y 拟合岭回归。 然后对 SSE 及其对应的 lambda 值进行子集化
【问题讨论】:
-
你需要提供一个 ridge 的公式.. 在我写东西之前.. 你确定这是你想要做的吗?你是带有 1 个变量的岭回归,这根本没有意义
-
sthda.com/english/articles/37-model-selection-essentials-in-r/…,当你有很多变量并想要惩罚它们时,你会使用 ridge、lasso 等。在这种情况下你只有一个????
-
再次感谢您的帮助!是的,所以许多变量将是来自“genmark_new”数据集(第一个图像)的每个基因标记,作为“coleslev_new”数据集(第二个图像)中每一行的预测因子。例如,将“genmark_new”中 F_1 行的每一列作为“coleslev_new”中 F_1 行的预测变量
-
嗨@ValentinaGrilloAlvarado,好的,是的,所以你有胆固醇作为表型或反应,你想找到与它最相关的标记。如果您使用 ridge,您可以一次性安装所有内容。如果你想一次做一个变量,你可以使用一个简单的线性模型。
-
我的观点是,只有当你有很多自变量时,lambda 才有意义。不是当你只有 1 个时
标签: r statistics statsmodels