首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更多的MLE问题

更多的MLE问题
EN

Stack Overflow用户
提问于 2015-11-24 10:15:38
回答 2查看 472关注 0票数 2

我是一个学生研究的职位,刚进入R。我问了一个类似的问题(张贴在这里:MLE Issues)。我已经解决了最初的问题,但我在这个功能上遇到了更多的问题。

我还在用这个函数来估计台,

其中每个其他变量目前都是已知的。

下面是我的代码:

代码语言:javascript
复制
  maxParam <- function(theta) {
    logl <- sum(for (i in 1:length(doses)) {
      sum(
        for (j in 1:LITTERS.M) {
          sum(
            for (k in 0:(litterResponses[i,j]-1)) {
              sum(log10(probabilityResponses[i] + k * theta[i]))
            }
            +
            for (k in 0:(litterSizes[i,j]-litterResponses[i,j]-1)) {
              sum(log10(1 - probabilityResponses[i] + k * theta[i]))
            }
            -
            for (k in 0:(litterSizes[i,j] - 1)) {
              sum(log10(1 + k * theta[i]))
            }
          )
        }
      )
    })

    return (-logl)
  }

  mle.fit <- mle(maxParam, start=list(theta=c(1,1,1,1,1,1)))
  print(mle.fit)

我被抛出的错误是:

错误:参数"theta“缺失,没有默认设置

如果错误是愚蠢的,我很抱歉,我对R.

注释:i使用向量(1,1,1,1,1,1,1)作为θ的测试。这不是实际数据。剂量是与血清剂量水平相对应的6的载体。凋落物反应是一种矩阵,描述每窝每剂量血清的反应。LitterSizes是一种矩阵,它描述每一窝垃圾的每一剂量的大小。LITTERS.M是与血清接触的儿童的初始数量。ProbabilityResponses是一种描述小鼠受血清影响的可能性的载体。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-15 01:35:34

函数mle不接受初始值的向量。通过优化找到的每个参数都需要作为标量传递。只需将函数的声明更改为:

代码语言:javascript
复制
maxParam <- function(theta_1 = 1, theta_2 = 1, etc) {
    theta <- unlist(as.list(environment()))

    ... # rest of function follows
  }

如果etc的意思是将其替换为theta_3 = 1,则根据需要使用theta_4 = 1。然后,可以用以下方法调用函数mle

代码语言:javascript
复制
mle.fit <- mle(maxParam)
票数 3
EN

Stack Overflow用户

发布于 2016-10-24 03:46:03

不久前我也有过同样的问题。mle不接受向量参数,就像mle2一样。Have look at this.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33890896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档