如何从R中的模型中获取系数?

发布于 2025-02-01 17:48:18 字数 1096 浏览 4 评论 0 原文

我正在尝试像其他模型一样,从MLE模型中存储系数。令人惊讶的是,它会引发错误。还有其他存储它的方法吗?

set.seed(111)
y.size <- rnorm(100,4,1)
p <- rnorm(100,5,1)

df <- data.frame(p, y.size)

glae <- function(A,K,Ka,q, sigma, c) {
  lnqp <- if(q == 0) log(p) else ((p^q - 1)) / q
  y.pred <- ((A *((p*K/Ka)-1))-1)* lnqp + c
  ll <-   -sum(dnorm(y.size, mean = y.pred, sd = sigma, log=TRUE ))
  ll
}

mle2.model <- mle(glae, start = list(A = -2, K = 100, Ka = 200, q= 0.1, sigma = 0.1, c=3.8))
summary(mle2.model)

Maximum likelihood estimation

Call:

mle(minuslogl = glae,start = list(a = -2,k = 100,ka = 200, q = 0.1,sigma = 0.1,c = 3.8))

Coefficients:
        Estimate Std. Error
A      12.511258        NaN
K      99.537509        NaN
Ka    200.231236 1684.30918
q     -32.959393        NaN
sigma 363.906677        NaN
c       8.135369   35.47982

-2 log L: 1363.185 


A.final <- summary(mle2.model)$Coefficients[1]

`Error in summary(mle2.model)$Coefficients : $ operator not defined for this S4 class

此外:警告消息:在sqrt(diag(object@vcov))中:nans产生。

I am trying to store coefficients from a mle model just like a normally do for other models. Surprisingly, it throws an error. Any other methods to store it?

set.seed(111)
y.size <- rnorm(100,4,1)
p <- rnorm(100,5,1)

df <- data.frame(p, y.size)

glae <- function(A,K,Ka,q, sigma, c) {
  lnqp <- if(q == 0) log(p) else ((p^q - 1)) / q
  y.pred <- ((A *((p*K/Ka)-1))-1)* lnqp + c
  ll <-   -sum(dnorm(y.size, mean = y.pred, sd = sigma, log=TRUE ))
  ll
}

mle2.model <- mle(glae, start = list(A = -2, K = 100, Ka = 200, q= 0.1, sigma = 0.1, c=3.8))
summary(mle2.model)

Maximum likelihood estimation

Call:

mle(minuslogl = glae, start = list(A = -2, K = 100, Ka = 200,
q = 0.1, sigma = 0.1, c = 3.8))

Coefficients:
        Estimate Std. Error
A      12.511258        NaN
K      99.537509        NaN
Ka    200.231236 1684.30918
q     -32.959393        NaN
sigma 363.906677        NaN
c       8.135369   35.47982

-2 log L: 1363.185 


A.final <- summary(mle2.model)$Coefficients[1]

`Error in summary(mle2.model)$Coefficients : $ operator not defined for this S4 class

In addition: Warning message: In sqrt(diag(object@vcov)) : NaNs produced`

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烙印 2025-02-08 17:48:18

您可以使用@操作员访问此“ MLE” S4对象内容,例如

library(bbmle)
#> Loading required package: stats4

set.seed(111)
y.size <- rnorm(100,4,1)
p <- rnorm(100,5,1)

df <- data.frame(p, y.size)

glae <- function(A,K,Ka,q, sigma, c) {
  lnqp <- if(q == 0) log(p) else ((p^q - 1)) / q
  y.pred <- ((A *((p*K/Ka)-1))-1)* lnqp + c
  ll <-   -sum(dnorm(y.size, mean = y.pred, sd = sigma, log=TRUE ))
  ll
}

mle2.model <- mle(glae, start = list(A = -2, K = 100, Ka = 200, q= 0.1, sigma = 0.1, c=3.8))
coefs <- mle2.model@coef
coefs
#>          A          K         Ka          q      sigma          c 
#>  12.511258  99.537509 200.231236 -32.959393 363.906677   8.135369

rel =“ nofollow noreferrer”> reprex软件包(v2.0.1)

You can access this "mle" S4 object contents using the @ operator, e.g.

library(bbmle)
#> Loading required package: stats4

set.seed(111)
y.size <- rnorm(100,4,1)
p <- rnorm(100,5,1)

df <- data.frame(p, y.size)

glae <- function(A,K,Ka,q, sigma, c) {
  lnqp <- if(q == 0) log(p) else ((p^q - 1)) / q
  y.pred <- ((A *((p*K/Ka)-1))-1)* lnqp + c
  ll <-   -sum(dnorm(y.size, mean = y.pred, sd = sigma, log=TRUE ))
  ll
}

mle2.model <- mle(glae, start = list(A = -2, K = 100, Ka = 200, q= 0.1, sigma = 0.1, c=3.8))
coefs <- mle2.model@coef
coefs
#>          A          K         Ka          q      sigma          c 
#>  12.511258  99.537509 200.231236 -32.959393 363.906677   8.135369

Created on 2022-05-27 by the reprex package (v2.0.1)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文