Попробуйте gnlm::bnlr()
. Ссылка по умолчанию - logit, и вы можете указать нелинейную функцию данных и параметров. Я включаю два ответа в зависимости от того, являются ли gap
и sca
данными или параметрами.
library(gnlm)
В случае gap
и sca
это данные:
## if gap and sca are data:
set.seed(1)
dat <- data.frame( x = rnorm(10),
gap = rnorm(10),
sca = rnorm(10),
y = rbinom(10,1,0.4))
y_cbind = cbind(dat$y, 1-dat$y)
attach(dat)
bnlr(y=y_cbind, mu = ~ int - slo * x + gap / (1 + x / sca), pmu = c(0,0))
Вывод:
Call:
bnlr(y = y_cbind, mu = ~int - slo * x + gap/(1 + x/sca), pmu = c(0,
0))
binomial distribution
Response: y_cbind
Log likelihood function:
{
m <- plogis(mu1(p))
-sum(wt * (y[, 1] * log(m) + y[, 2] * log(1 - m)))
}
Location function:
~int - slo * x + gap/(1 + x/sca)
-Log likelihood 2.45656
Degrees of freedom 8
AIC 4.45656
Iterations 8
Location parameters:
estimate se
int -1.077 0.8827
slo -1.424 1.7763
Correlations:
1 2
1 1.0000 0.1358
2 0.1358 1.0000
В случае gap
и sca
- это параметры:
## if gap and sca are parameters:
detach(dat)
set.seed(2)
dat <- data.frame( x = rbinom(1000,1,0.3),
y = rbinom(1000,1,0.4))
y_cbind = cbind(dat$y, 1-dat$y)
attach(dat)
bnlr(y=y_cbind, mu = ~ int - slo * x + gap / (1 + x / sca), pmu = c(0,0,0,1))
Вывод:
Call:
bnlr(y = y_cbind, mu = ~int - slo * x + gap/(1 + x/sca), pmu = c(0,
0, 0, 1))
binomial distribution
Response: y_cbind
Log likelihood function:
{
m <- plogis(mu1(p))
-sum(wt * (y[, 1] * log(m) + y[, 2] * log(1 - m)))
}
Location function:
~int - slo * x + gap/(1 + x/sca)
-Log likelihood 672.9106
Degrees of freedom 996
AIC 676.9106
Iterations 7
Location parameters:
estimate se
int -0.22189 2.1007
slo 0.03828 3.6051
gap -0.20273 2.0992
sca 0.99885 0.3956
Correlations:
1 2 3 4
1 1.0000 1.859 -0.9993 -281.45
2 1.8587 1.000 -1.8592 -82.06
3 -0.9993 -1.859 1.0000 281.64
4 -281.4530 -82.061 281.6443 1.00
person
swihart
schedule
01.08.2017
logistic
, за исключением логистической функции, аbinomial
не находит функцию ссылки logit, и во всех примерах используется что-то под названиемDref
и Понятия не имею, что это такое. Я попытался использоватьgnm
с формулой, которую описал там, и это дало мнеobject 'int' not found
ошибку. Если вы мне скажете, это можно будет сделать там, хотя я займусь этим дальше. - person Pedro Carvalho   schedule 28.07.2017ax^2 + bx + c
это не то, что я пытаюсь вписать, я пытаюсь вписатьint - slo * x + gap / (1 + x / sca)
- person Pedro Carvalho   schedule 28.07.2017bbmle::mle2
иrethinking
пакет (только для Github) - person Ben Bolker   schedule 01.08.2017