我想在高维环境中使用主协变量回归,在这种情况下,我的解释变量(J)比观察值(N)更多。我遇到了R包“ PCovR”(请参阅​​CRAN-R包here和Journal of Statistics Software文章here)。该包装在低尺寸设置中表现出色。

但是,包装在高尺寸设置中失败。要在高维度上遇到问题,您可以运行以下(最小可行示例)代码:

# Load package
library(PCovR)

# Fix random number generator
set.seed(1)

# Generate X: random standard normal matrix with J=200 explanatory variables and N=100 observations
x <- matrix(nrom(n=20000, mean=0, sd=1), nrow=100, ncol=200); dim(x)

# Generate Y: random standard normal vector with N=100 observations
y <- rnorm(n=100, mean=0, sd=1)

# Run PCovR
pcovr.fit <- pcovr(X=x, Y=y, modsel="seq")


这给出了以下错误,

R> Error in Vminc[k] = which.min(A[, k]) : replacement has length zero


为了调整参数R(分量数)和alpha(权重参数),程序包提供了基于最大似然性(“ modsel = seq”)的快速顺序模型估计选项以及基于网格搜索交叉的计算需求量同时估计-validation(“ modsel = sim”)。

高维问题的根源在于,由于在ErrorRatio函数中执行了线性回归,因此显然无法确定比率参数(默认情况下,如果使用“ modsel = seq”,则使用ErrorRatio函数计算)。一个可行但次优的解决方案是使用带有比例参数预先指定的同时过程(因为它将不会在同时过程中使用),

pcovr.fit <- pcovr(X=x, Y=y, modsel="sim", ratio=1)


但这在计算上要求很高。关于如何在高维设置中运行PCovR的任何想法,提示或建议?

最佳答案

该软件包的更新(版本2.7)已于本周初在CRAN上发布。在此较新版本中,高尺寸设置中的参数“比率”默认等于1。当然,也可以要求其他比率,但是只有在具有200个预测变量(J)和仅1个标准(K)的标准化数据的情况下,获得的alpha值才会发生微小变化,因为使用以下公式(用于标准化数据):

alpha <- J/(J+K*ratio)


另一种可行的方法是搜索数据误差方差的另一个代理,但是在这种特定情况下,无论如何,您最终可能会得到一个.99左右的alpha值。
但是,研究选择另一个alpha值对所获得的解决方案的影响可能会很有趣。

关于r - 高维设置下的主协变量回归(PCovR),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42972978/

10-11 22:33