lm()
의 특정 매개 변수를 양수 계수로 제한하는 방법을 알고 싶습니다. 몇 가지 패키지 또는 기능 (예 : display
)이 모든 계수와 절편을 양수로 만들 수 있습니다.R - 특정 매개 변수가 lm()에서 양수 계수를 갖도록합니다.
예를 들어,이 예에서는 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
내가 패키지 'nnls'
에서 기능 nnnpls()
을 시도, 쉽게 계수 기호를 제어 할 수 있습니다. 불행히도이 기능은 NA를 허용하지 않으므로 데이터에서 NA가있는 문제로 인해 사용할 수 없습니다.
나는 함수를 보았습니다. glmc()
은 제한을 적용하는 데 사용할 수는 있지만 작동시키지 못했습니다.
내가 무엇을해야하는지 알려주실 수 있습니까?
감사합니다. "x1과 x2의 계수를 양수로 제한하면 예상대로 0이됩니다."하지만 왜 그런가? 또한 penalized() 함수에서 각 매개 변수를 양수 또는 음수로 정의해야합니다. 매개 변수를 자유롭게 만들 수 있습니까 (예 : lambda3은 양수 또는 음수 일 수 있습니다). –
아니요, 'positive = FALSE'는 '무료'를 의미합니다. 또한, 제곱합의 실제 최소값이 음의 추정치에 대해 발생하는 경우, 제한된 매개 변수 공간의 최소값이 0으로 나타날 가능성이 큽니다. – Roland
패키지가 포함되지 않으면 더 재미있을 것입니다. OLS가 아닌 설정에서 적용하려고한다고 가정 해보십시오. –