我是一个新的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。 我不知道我错过了什么或做错了什么。非常感谢您的帮助。
foreign
包是不必要的... - Ben Bolkercropid
是什么?在help(anneal)
页面中有一个非常相似的例子,使用 "x" 作为因变量。您知道模拟退火不是一种确定性方法,对于小差异您没有必要担心。 - IRTFM