小编Con*_*tin的帖子

计算边际效应:为什么 ggeffect 和 ggemmeans 给出不同的答案?

例子

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)

r mixed-models marginal-effects glmmtmb

5
推荐指数
1
解决办法
548
查看次数

使用 optim 为 nls 选择初始值

我在文献中所看到的一种方法是使用optim()选择在包非线性模型的初始值nlsnlme,但是,我通过实际执行不解。

以佛罗里达州阿拉楚阿的 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()是错误的,但我看不到我的错误。感谢您提供任何帮助。

r nls

0
推荐指数
1
解决办法
34
查看次数

标签 统计

r ×2

glmmtmb ×1

marginal-effects ×1

mixed-models ×1

nls ×1