找到非线性分布的MLE(在R中,使用高斯-牛顿法):
y = sin(x*theta) + epsilon
where epsilon ~ N(0 , 0.01^2)
为此,我被要求生成一些数据,这些数据是从0 <= x <= 10均匀(随机)分布的,其中n = 200和theta = 2(仅用于生成)。
例如,接近sin函数最大值(1、4等)的值将收敛,而其他函数则不会收敛。
已编辑 我现在了解了theta.iter的含义,但我似乎无法理解为什么它有时甚至在那时会收敛,输入哪个值以获得有用的输出。有人可以解释吗?
theta <- 2
x <- runif(200, 0, 10)
x <- sort(x) #this is just to sort the generated data so that plotting it
#actually looks like a sine funciton
y <- sin(x*theta) + rnorm(200, mean = 0, sd = 0.1^2)
GN_sin <- function(theta.iter, x , y, epsilon){
index <- TRUE
while (index){
y.iter <- matrix(y - sin(x*theta.iter), 200, 1)
x.iter <- matrix(theta.iter*cos(x*theta.iter), 200, 1)
theta.new <- theta.iter +
solve(t(x.iter)%*%x.iter)%*%t(x.iter)%*%y.iter
if (abs(theta.new-theta.iter) < epsilon) {index <- FALSE}
theta.iter <- as.vector(theta.new)
cat(theta.iter, '\n')
}
}