簡體   English   中英

最大似然估計

[英]maximum likelihood estimation

我是R的新用戶,如果我的問題很愚蠢,希望您能接受。 我想使用R中的最大似然估計器來估計以下模型。

y= a+b*(lnx-α)

其中a,b和α是要估計的參數,X和Y是我的數據集。 我嘗試使用從網上獲得的以下代碼:

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)

我得到的結果是相似的,盡管數據是不同的,即即使我更改了cropid。 同樣,生成的預測值是針對x而不是y的。 我不知道我錯過了什么或出錯了。 非常感謝您的幫助。

我不確定您的模型公式是否會帶來獨特的解決方案,但總的來說,您可以找到具有optim功能的MLE

這是使用optim進行線性回歸的簡單示例:

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 ”以反映您的模型公式,例如

sum( (y - (YOUR MODEL FORMULA) )^2 )

編輯

我只是舉一個使用optim的簡單示例,以防您需要優化自定義模型公式。 我並不是說從簡單的線性回歸中使用它,因為lm就足夠了。

我很驚訝iTech對參數線性問題進行了優化。 用他的x和y數據:

> lm(y ~ log(x) )

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

Coefficients:
(Intercept)       log(x)  
       10.0          3.5  

對於線性問題,最小二乘解是ML解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM