繁体   English   中英

R:glmnet:强制系数达到某个符号

[英]R: glmnet: forcing the coefficient to a certain sign

我有一个非常大的矩阵,所以我使用glmnet进行回归。 我有一个条件,p的名称必须具有正系数,并且名称为na负系数。

我怎样才能在glmnet中强制这种情况? 以下是一个小例子:

library(glmnet)

y <- cumsum(sample(c(-1, 1),100, TRUE))
p1 <- cumsum(sample(c(-1, 1),100, TRUE))
p2 <- cumsum(sample(c(-1, 1),100, TRUE))
p3 <- cumsum(sample(c(-1, 1),100, TRUE))
n1 <- cumsum(sample(c(-1, 1),100, TRUE))
n2 <- cumsum(sample(c(-1, 1),100, TRUE))

df1  <- data.frame(y,p1,p2,p3,n1,n2)
df1




y <-  as.matrix(df1[,1])
x <-  as.matrix(df1[,-1])

fit1=glmnet(x,y)

coefall <- coef(fit1,s=0.005) 

谢谢您的帮助。

来自?glmnet

参数:

...

lower.limits:每个系数的下限矢量; 默认'-Inf'。 每个都必须是非正面的。 可以表示为单个值(然后将被复制),否则为长度为'nvars'的向量

upper.limits:每个系数的上限矢量; 默认'Inf'。 见'lower.limits'

要限制参数,您必须调用:

fit1=glmnet(x, y, lower.limits=c(0,   0,   0,   -Inf, -Inf), 
                  upper.limits=c(Inf, Inf, Inf, 0,    0))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM