如何用极大似然估计来估计一组时间序列的维纳过程参数,用matlab实现
时间: 2023-06-17 09:06:34 浏览: 134
假设有一个时间序列 $y_t$,其模型为:
$$y_t = \mu + \varepsilon_t$$
其中 $\mu$ 为均值,$\varepsilon_t$ 为维纳过程,满足:
$$\varepsilon_t \sim N(0, \sigma^2)$$
维纳过程具有以下性质:
$$E(\varepsilon_t) = 0$$
$$E(\varepsilon_t^2) = \sigma^2$$
$$E(\varepsilon_t\varepsilon_{t-j}) = 0, j\neq0$$
因此,可以用极大似然估计来估计参数 $\mu$ 和 $\sigma^2$。极大似然估计的目标是找到最大化似然函数 $\mathcal{L}$ 的参数值:
$$\mathcal{L}(\mu, \sigma^2) = \prod_{t=1}^n f(y_t; \mu, \sigma^2)$$
其中 $f(y_t;\mu,\sigma^2)$ 是 $\varepsilon_t$ 的概率密度函数。
对于维纳过程,其概率密度函数为:
$$f(y_t;\mu,\sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(y_t-\mu)^2}{2\sigma^2}\right)$$
将其代入似然函数中,得到:
$$\mathcal{L}(\mu, \sigma^2) = \prod_{t=1}^n \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(y_t-\mu)^2}{2\sigma^2}\right)$$
对数似然函数为:
$$\ln \mathcal{L}(\mu, \sigma^2) = -\frac{n}{2}\ln(2\pi) - n\ln(\sigma) - \frac{1}{2\sigma^2}\sum_{t=1}^n(y_t-\mu)^2$$
最大化对数似然函数等价于最小化 $\sum_{t=1}^n(y_t-\mu)^2$。
因此,可以用样本均值作为 $\mu$ 的估计值:
$$\hat{\mu} = \frac{1}{n}\sum_{t=1}^n y_t$$
用样本方差作为 $\sigma^2$ 的估计值:
$$\hat{\sigma}^2 = \frac{1}{n}\sum_{t=1}^n(y_t-\hat{\mu})^2$$
下面是用 Matlab 实现的代码:
```Matlab
% 生成维纳过程数据
n = 1000;
mu = 1;
sigma = 2;
epsilon = sigma * randn(n, 1);
y = mu + epsilon;
% 用极大似然估计计算参数
mu_hat = mean(y);
sigma_hat = sqrt(mean((y - mu_hat).^2));
disp(['mu: true=', num2str(mu), ', estimated=', num2str(mu_hat)]);
disp(['sigma: true=', num2str(sigma), ', estimated=', num2str(sigma_hat)]);
```
其中,生成了一个长度为 1000 的维纳过程数据,使用样本均值和样本方差作为参数的估计值。最后输出了真实值和估计值。