当前位置: 首页 > 知识库问答 >
问题:

r - 自学用R语言写了GARCH(1,1)的极大似然参数估计,十分需要帮我看看哪有问题?

楚方伟
2023-07-17

我必须在不使用R包(package)的情况下进行garch拟合过程,并估计参数。
我觉得是for循环那块有问题,但也想了好久不知道如何改善代码,请大家赐教,非常感谢!或者问问有没有自己编写的AR-GARCH程序可让我参考学习的
下面两个代码R都输出结果为:
Maximum Likelihood estimation
Newton-Raphson maximisation, 0 iterations
Return code 100: Initial value out of range.

顺便还有两个问题我想问问:
1、进行极大似然估计时,程序输出下面这句话是什么意思,对参数估计结果有影响吗
Return code 8: successive function values within relative tolerance limit (reltol)
2、如果估计时出现There were 50 or more warnings (use warnings() to see the first 50),但是最终也会输出参数估计结果,而且参数的值也没啥问题,这些警告信息要处理吗,有影响吗
1: In sqrt(ht) : NaNs produced
2: In log(ht) : NaNs produced
3: In sqrt(ht) : NaNs produced
......
这是建模过程:

方法一:

lf8 <- function(pa){  mu <- pa[1]  ar1 <- pa[2]  omega <- pa[3]  alpha <- pa[4]  beta <- pa[5]  epsilon <- 0  ht <- ht_0  zt <- 0  l <- 0  for(i in 3: length(rt)){    epsilon[i] <- rt[i] - mu -ar1*rt[i-1]    ht[i] <- omega + alpha * (rt[i-1]-mu-ar1*rt[i-2])^2 + beta * ht[i-1]    zt[i] <- epsilon[i] / sqrt(ht[i])    l[i] <- -0.5*log(2*pi) - 0.5*log(ht[i]) - 0.5*(zt[i])^2  }  log_sum <- sum(l)  result <- l  return(result)}#对极大似然函数进行估计est8 <- maxLik(lf8, start=c(0, 0.2, 0.2, 0, 0.8))est8

方法二:

lf4 <- function(pa){  mu <- pa[1]  ar1 <- pa[2]  omega <- pa[3]  alpha <- pa[4]  beta <- pa[5]  ht <- ht_0  l <- 0  for(i in 3: length(rt)){    ht[i] <- omega + alpha * (rt[i-1]-mu-ar1*rt[i-2])^2 + beta * ht[i-1]    l[i] <- -0.5*log(2*pi) - 0.5*log(ht[i]) - 0.5*(rt[i] -mu -ar1*rt[i-1])^2 / ht[i]  }  log_sum <- sum(l)  result <- l  return(result)}#对极大似然函数进行估计est4 <- maxLik(lf4, start=c(0, 0.2, 0.2, 0, 0.8))est4

共有1个答案

颜高格
2023-07-17
lf8 <- function(pa){  mu <- pa[1]  ar1 <- pa[2]  omega <- pa[3]  alpha <- pa[4]  beta <- pa[5]  epsilon <- numeric(length(rt))  ht <- ht_0  zt <- numeric(length(rt))  l <- numeric(length(rt))  for(i in 3: length(rt)){    epsilon[i] <- rt[i] - mu - ar1*rt[i-1]    ht[i] <- omega + alpha * (rt[i-1] - mu - ar1*rt[i-2])^2 + beta * ht[i-1]    zt[i] <- epsilon[i] / sqrt(ht[i])    l[i] <- -0.5 * log(2 * pi) - 0.5 * log(ht[i]) - 0.5 * zt[i]^2  }  log_sum <- sum(l)  return(-log_sum) # return the negative sum of likelihood}est8 <- maxLik(lf8, start=c(0, 0.2, 0.2, 0, 0.8))est8
 类似资料:
  • 本文向大家介绍为什么LR用极大似然估计参数?相关面试题,主要包含被问及为什么LR用极大似然估计参数?时的应答技巧和注意事项,需要的朋友参考一下 如果用平方差损失函数时,损失函数对于参数是一个非凸优化的问题,可能会收敛到局部最优解,而且对数似然的概念是使得样本出现的概率最大,采用对数似然梯度更新速度也比较快

  • 本文向大家介绍极大似然估计和最小二乘估计的关系?相关面试题,主要包含被问及极大似然估计和最小二乘估计的关系?时的应答技巧和注意事项,需要的朋友参考一下 极大似然的估计的概念是最大化样本出现概率,即目标函数为似然函数,而最小二乘估计是为了最小化样本预测值与真实值之间的距离,即最小化估计值和预测值差的平方和,当似然函数为高斯函数时两者相同

  • 给定随机变量的分布和未知参数,利用观测到的样本计算似然函数。 选择最大似然函数的参数作为参数的估计量。 最大似然估计的基本原理:极大化似然函数 假设样本{$$X_1,X_2,...X_n$$}服从概率密度函数$$f_\theta(x)$$,其中$$\theta=(\theta_1,\theta_2,....\theta_k)$$是未知参数。 当固定x的时候,$$f_\theta(x)$$就是$$\

  • 在此处输入图像描述 输入:20 17 999 997输出:2^2*5 17 757*1321

  • 主要内容:例子,命名列和行,访问数组元素,操纵数组元素,跨数组元素的计算数组是可以在二维及以上存储数据的R数据对象。 例如 - 如果创建一个维数组,那么它将创建个矩形矩阵,每个矩阵具有行和列。数组只能存储数据类型。 数组可通过使用函数来创建。 它将向量作为输入,并使用参数中的值来创建数组。 例子 以下示例创建两个矩阵的数组,每个矩阵具有行和列。 当我们执行上述代码时,会产生以下结果 - 命名列和行 可以使用参数为数组中的行,列和矩阵命名。 当我们执行上述代码时,会产生

  • 主要内容:函数定义,函数组件,内置函数,用户自定义函数,懒惰计算函数一个函数是组合在一起以执行特定任务的一组语句。R具有大量内置函数,当然用户也可以创建自己的功能。 在R中,函数是一个对象,所以R解释器能够将控制传递给函数,以将参数传递函数完成操作。 该函数又执行其任务并将控制权返回给解释器以及可存储在其他对象中的任何结果。 函数定义 使用关键字来创建一个R函数。R函数定义的基本语法如下: 函数组件 函数中有许多不同的部分,它们是 - 函数名称 - 这是函数的实际