首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >最大似然估计

最大似然估计
EN

Stack Overflow用户
提问于 2012-12-30 01:49:58
回答 2查看 5.3K关注 0票数 4

我是R的新用户,如果我的问题很愚蠢,希望你能容忍我。我想使用R中的最大似然估计器来估计以下模型。

代码语言:javascript
运行
复制
y= a+b*(lnx-α)

其中a、b和α是要估计的参数,X和Y是我的数据集。我试着使用我从网络上得到的以下代码:

代码语言:javascript
运行
复制
library(foreign)
maindata <- read.csv("C:/Users/NUNU/Desktop/maindata/output2.csv")
h <- subset(maindata, cropid==10)
library(likelihood)
modelfun <- function (a, b, x) { b *(x-a)}
par <- list(a = 0, b = 0)
var<-list(x = "x")
par_lo <- list(a = 0, b = 0)
par_hi <- list(a = 50, b = 50)
var$y <- "y"
var$mean <- "predicted"
var$sd <- 0.815585
var$log <- TRUE
results <- anneal(model = modelfun, par = par, var = var,
            source_data = h, par_lo = par_lo, par_hi = par_hi,
            pdf = dnorm, dep_var = "y", max_iter = 20000)

我得到的结果是相似的,尽管数据是不同的,即使我改变了游标。同样,生成的预测值是x而不是y。我不知道我错过了什么或出了什么问题。非常感谢您的帮助。

EN

回答 2

Stack Overflow用户

发布于 2012-12-30 03:25:09

我不确定您的模型公式是否会导致唯一的解,但通常您可以找到带有optim函数的最大似然估计

下面是一个使用optim进行线性回归的简单示例:

代码语言:javascript
运行
复制
fn <- function(beta, x, y) {
a = beta[1]
b = beta[2]

    sum( (y - (a + b * log(x)))^2 ) 
}

# generate some data for testing
x = 1:100

# a = 10, b = 3.5
y = 10 + 3.5 * log(x)

optim(c(0,0,0),fn,x=x,y=y,method="BFGS")

您可以更改函数"fn“以反映您的模型公式,例如

代码语言:javascript
运行
复制
sum( (y - (YOUR MODEL FORMULA) )^2 )

编辑

我只是给出了一个使用optim的简单示例,以防您有一个自定义模型公式要优化。我的意思不是从简单的线性回归中使用它,因为lm就足够了。

票数 4
EN

Stack Overflow用户

发布于 2012-12-30 08:57:10

让我有点惊讶的是,iTech使用optim来解决其参数中线性的问题。使用他的x和y数据:

代码语言:javascript
运行
复制
> lm(y ~ log(x) )

Call:
lm(formula = y ~ log(x))

Coefficients:
(Intercept)       log(x)  
       10.0          3.5  

对于线性问题,最小二乘解是ML解。

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

https://stackoverflow.com/questions/14084346

复制
相关文章

相似问题

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