【发布时间】:2015-10-25 19:53:07
【问题描述】:
我对 R 和统计都是新手。我正在玩最大似然估计,但我得到了一些不正确的结果。我想用一个简单的线性函数对 x 建模:
x<-apply(matrix(seq(1,10,1), nrow=1), 1, function(x) 10*x+runif(10,-3,3))
LL<-function(a,b){
R=apply(x,1,function(y) a*y+b)
-sum(log(R))
}
mle(LL, start=list(a=10, b=0))
我得到以下结果:
Coefficients:
a b
43571.957 1338.345
而不是a~10,b~0。
我根据Spacedman的建议修改了代码:
set.seed(99)
x<-apply(matrix(seq(1,10,1), nrow=1), 1, function(x) 10*x+runif(10,-3,3))
LL<-function(a,b){
R = x[,1] - a*(1:10) + b
-sum(R^2)
}
library(stats4)
mle(LL, start=list(a=11, b=0.3))
Error in solve.default(oout$hessian) :
Lapack routine dgesv: system is exactly singular: U[1,1] = 0
我不知道如何摆脱这个错误。更改 sees 并再次生成 x 值没有帮助。
【问题讨论】:
-
mle函数来自哪个包?另外,在生成数据之前使用set.seed(99),这样我们就可以使用相同的随机数 -
@Spacedman mle 来自包 stats4
标签: r statistics