nls()
함수를 사용하여 데이터를 맞추려고합니다. 데이터의 특성에 따라 하나의 계수와 두 계수의 합계가 계산됩니다. 짧은 문제를 어디에서 볼 수 있는지 소개해 드리겠습니다. 매개 변수 b1은 0과 1 사이에 있어야하고 매개 변수 b1과 b2의 합은 0과 1 사이에 있어야합니다.nls 계수의 제약
set.seed(123)
# example where everything is OK
x <- 1:200
g <- rbinom(200, 1, 0.5)
y <- 3 + (0.7 + 0.2 * g) * x
yeps <- y + rnorm(length(y), sd = 0.1)
# both parameter b1 and sum of parameters b1 and b2 are between 0 and 1
nls(yeps ~ a + (b1 + b2 * g) * x, start = list(a = 0.12345, b1 = 0.54321, b2 = 0.4213))
# using more extreme values
x <- 1:200
g <- rbinom(200, 1, 0.5)
y <- 3 + (0.9 - 0.99 * g) * x
yeps <- y + rnorm(length(y), sd = 15)
# b1 is OK, but b1 + b2 < 0
nls(yeps ~ a + (b1 + b2 * g) * x,
start = list(a = 0.12345, b1 = 0.54321, b2 = 0.4213))
# trying constraints, not good, sum is still out of range
nls(yeps ~ a + (b1 + b2 * g) * x,
start = list(a = 0.12345, b1 = 0.54321, b2 = 0.4213),
lower = list(a = -Inf, b1 = 0, b2 = -1),
upper = list(a = Inf, b1 = 1, b2 = 1),
algorithm = "port")
내가 찾고 어떻게 그런 일이 (작동하지 않습니다)입니다 :
nls(yeps ~ a + (b1 + b2 * g) * x,
start = list(a = 0.12345, b1 = 0.54321, b2 = 0.4213),
lower = list(a = -Inf, b1 = 0, b2 = -b1),
upper = list(a = Inf, b1 = 1, b2 = 1 - b1),
algorithm = "port")
는 nls()
기능에 다른 매개 변수와 제약 조건을 설정할 수 있습니까? 어떤 제안을 주셔서 감사합니다!
이 [질문] (http://stackoverflow.com/q/11589139/707145)에서보십시오. – MYaseen208
힌트를 보내 주셔서 감사합니다. 그러나'ifelse'가'nls' 함수에서 좋은 접근법인지 확실하지 않습니다. http://stats.stackexchange.com/questions/14561/specifying-parameter-constraints-in-nls – Adela
어쨌든,이 접근법은 각각의 'g' 그룹에 대해 두 모델을 맞추는 것과 어떻게 다릅니 까? – Adela