library(glmmTMB)
library(ggeffects)
## Zero-inflated negative binomial model
(m <- glmmTMB(count ~ spp + mined + (1|site),
ziformula=~spp + mined,
family=nbinom2,
data=Salamanders,
na.action = "na.fail"))
summary(m)
ggemmeans(m, terms="spp")
spp | Predicted | 95% CI
--------------------------------
GP | 1.11 | [0.66, 1.86]
PR | 0.42 | [0.11, 1.59]
DM | 1.32 | [0.81, 2.13]
EC-A | 0.75 | [0.37, 1.53]
EC-L | 1.81 | [1.09, 3.00]
DES-L | 2.00 | [1.25, 3.21]
DF | 0.99 | [0.61, 1.62]
ggeffects::ggeffect(m, terms="spp")
spp …Run Code Online (Sandbox Code Playgroud) 我在文献中所看到的一种方法是使用optim()选择在包非线性模型的初始值nls或nlme,但是,我通过实际执行不解。
以佛罗里达州阿拉楚阿的 COVID 数据为例:
dat=data.frame(x=seq(1,10,1), y=c(27.9,23.1,24.6,33.0,48.0,136.4,243.4,396.7,519.9,602.8))
x 是时间点,y 是每 10,000 人感染的人数
现在,如果我想在 nls 中拟合一个四参数逻辑模型,我可以使用
n1 <- nls(y ~ SSfpl(x, A, B, M, S), data = dat)
Run Code Online (Sandbox Code Playgroud)
但是现在想象一下参数估计对初始值高度敏感,所以我想优化我的方法。这将如何实现?
我想尝试的方法如下
fun_to_optim <- function(data, guess){
x = data$x
y = data$y
A = guess[1]
B = guess[2]
M = guess[3]
S = guess[4]
y = A + (B-A)/(1+exp((M-x)/S))
return(-sum(y)) }
optim(fn=fun_to_optim, data=dat,
par=c(10,10,10,10),
method="Nelder-Mead")
Run Code Online (Sandbox Code Playgroud)
结果optim()是错误的,但我看不到我的错误。感谢您提供任何帮助。