Я хотел бы знать, как ограничить определенные параметры в lm()
, чтобы они имели положительные коэффициенты. Есть несколько пакетов или функций (например, display
), которые могут делать все коэффициенты и точку пересечения положительными.
Например, в этом примере я хотел бы заставить только x1
и x2
иметь положительные коэффициенты.
x1=c(NA,rnorm(99)*10)
x2=c(NA,NA,rnorm(98)*10)
x3=rnorm(100)*10
y=sin(x1)+cos(x2)-x3+rnorm(100)
lm(y~x1+x2+x3)
Call:
lm(formula = y ~ x1 + x2 + x3)
Coefficients:
(Intercept) x1 x2 x3
-0.06278 0.02261 -0.02233 -0.99626
Я пробовал функцию nnnpls()
в пакете nnls
, она легко может управлять знаком коэффициента. К сожалению, я не могу использовать его из-за проблем с NA
s в данных, поскольку эта функция не позволяет NA
.
Я видел, что функцию glmc()
можно использовать для наложения ограничений, но я не мог заставить ее работать.
Может ли кто-нибудь сообщить мне, что мне делать?