【发布时间】:2018-06-02 00:11:27
【问题描述】:
我想在 R 中执行加权非负最小二乘法(即所有拟合系数 >=0 的约束)。 nnls 包中的 nnls 函数似乎不支持权重。我是否正确,我可以通过在nnls 函数中通过将协变量矩阵X 和因变量y 乘以weights 向量的平方根来模拟weights,这似乎表明@ 987654321@?还是有更好的方法来做到这一点?
【问题讨论】:
-
希望此链接对您有所帮助:cran.r-project.org/web/packages/srvyr/vignettes/…
srvy包允许您使用您指定的权重创建矩阵。我使用调查数据并遇到同样的问题。使用此包,您可以创建一个已应用权重的矩阵,并将其与任何其他包一起使用,这样您就不需要包本身包含特定参数来加权数据 -
我熟悉常规加权最小二乘法,这不是问题 - 我正在寻找一个函数,尽管它允许我将所有系数限制为正...
-
我认为你可以使用 glmnet 包:stackoverflow.com/questions/35927521/…
-
是的,我知道 glmnet,它允许权重和约束,并且 lambda 设置为零,它不会进行任何正则化。它比 nnls 慢得多,因此我的问题是在 nnls 中将 X 和 y 乘以 sqrt(weights) 是否正确?
标签: r least-squares