卡尔曼滤波:从理论到应用的简介 卡尔曼滤波由鲁道夫·卡尔曼在1960年提出,是一种基于最小均方误差准则的最优估计方法。简单来说,卡尔曼滤波使用当前的系统状态和新的测量数据来更新状态估计,并将噪声最小化,从而提供更准确的状态估计。卡尔曼滤波的主要特点是它是递归的,这意味着它可以实时处理数据,不需要存储整个数据序列。在应用 Kalman 滤波器时,需要定义三个关键矩阵来控制价格的预测和更新过程。
Hurst Exponent: 探索时间序列的自相似性与长记忆性 Hurst指数通常用符号H表示,其取值范围在0到1之间。H = 0.5:表示随机游走(或布朗运动),即时间序列没有长记忆性,未来的走势与过去的走势无关。H < 0.5:表示时间序列存在反持性(anti-persistence),即当前的上升趋势往往意味着未来将出现下降趋势。H > 0.5:表示时间序列存在持性(persistence),即当前的上升趋势往往意味着未来将继续上升。通过计算Hurst指数,可以判断时间序列是具有长记忆性的还是具有短期依赖性的,从而对未来走势进行更为精准的预测。
ADF检验:时间序列平稳性检测 ADF检验是时间序列分析中广泛使用的平稳性检测工具。它通过在自回归模型中增加滞后项来提高对实际序列的适应性。ADF检验的主要优点在于能够有效检测单位根,消除自相关性;但其也有一定局限性,例如对小样本的敏感性,以及对误差项正态分布假设的依赖性。
ACF 与 PACF:深入了解时间序列分析的关键工具 自相关函数(Autocorrelation Function, ACF)描述了时间序列与其自身滞后值之间的相似性。它是计算不同滞后期(Lag)下的序列值之间的相关性,以观察随时间延迟变化的依赖性。偏自相关函数(Partial Autocorrelation Function, PACF)是 ACF 的延伸,用来捕捉特定滞后值上的“纯”自相关,剔除了其他中间滞后值的影响。ACF和PACF是时间序列分析中极为重要的工具,它们帮助我们识别序列中的依赖关系和周期性,从而为模型选择提供依据。
深入理解单位根:如何通过单位根检验分析序列的平稳性 在时间序列模型中,单位根的存在通常意味着序列具有随机趋势。比如,一个简单的 AR(1) 模型(自回归模型)可以写成:其中是均值为 0 的白噪声。如果参数,则该模型变为:这种形式的序列称为随机游走。它的一个特性是,随着时间的推移,序列的方差会不断增大,且均值不会稳定在某一值上。因此,单位根的存在表示序列的非平稳性。:序列平稳,均值和方差不随时间变化,适合平稳模型。:序列具有单位根,表现为随机趋势和随机游走,需要差分处理才能平稳。
均值、期望、方差、标准差与协方差:基础概念解析 均值帮助我们了解数据的中心位置。期望是概率论中的一个重要概念,描述了随机变量的平均值。方差和标准差是衡量数据波动性的关键指标。协方差则揭示了两个变量之间的关系强度和方向。掌握这些概念,能够帮助我们更好地理解和分析数据,在实际应用中,如金融分析、机器学习和数据科学中,它们是不可或缺的工具。
平稳性(Stationarity)的概念与应用 *平稳性(Stationarity)**指的是一个时间序列在统计性质上不随时间变化。均值不变:序列的期望值是常数,不随时间变化。方差不变:序列的波动幅度是固定的,方差不随时间变化。没有周期性特征:序列不具有可预测的周期性波动(如季节性、年周期等),即统计特性在时间上是独立的,不随时间呈现周期性变化。举例来说,下面三种时间序列都不是平稳的,其中图一的波定幅度不固定,从大变小;图二的均值不固定,一直上升;图三有明显的周期性正弦波特性。根据严格程度,平稳性可以分为。
偏差与方差的基本概念 在机器学习中,是一个核心概念,帮助我们理解模型的误差来源以及如何调节模型复杂度以达到更好的泛化性能。在这篇博客中,我们将深入讨论什么是偏差和方差,以及如何平衡二者来构建出色的模型。
QT: QML可视化树(Visual Parent)简介 目的本文简介QML的可视化树(Visual Parent)概念。简介Item是QML中的基础控件,是QML中所有控件的父类。使用如下方式定义一个Item的对象。Item可以包含任何多个子对象,因此通过Item可以定义多层级的嵌套可视化树结构。import QtQuick 2.0Item { width: 100; height: 100 Rectangle { width: 50; height: 50; colo
C++: 实战详解智能指针 目的本文简介C++ 11的智能指针,包括shared_ptr, unique_ptr与weak_ptr,并给出一些典型的使用场景。简介我推荐在一切可能的场合使用智能指针替代C/C++的裸指针。当使用智能指针变成一种习惯,它会从本质上影响程序思维:申请的要释放,打开的要关闭。问题考虑下面的代码场景,在极少情况下(fail1 / fail2)会导致资源(Resource)泄露。这里的资源不限于内存(memory),锁(lock)以及网络套接字(socket)等。Object *object = ne
C++:多线程的正确打开姿势 目的本例简介c++11中thread库如何创建与停止线程。实现如下的实例中,通过ThreadWrapper::start()方法启动线程,通过ThreadWrapper::stop()方法停止线程。线程的主体函数为Thread::run()方法。#include <iostream>#include <thread>#include <memory>#include <unistd.h>class ThreadWrapper {privat
c++: 实战详解vector 目的本文从实际使用的角度出发,简介C++中vector的基本用法,如增,删,改,查等,并举例说明。增如下代码演示如何向vector中添加元素,其中:#include <iostream>#include <vector>#include <iostream>#include <vector>int main() { std::vector<int> ilist; ilist.push_back(1); i
c++: 详解static_cast与dynamic_cast 目的本文简介C++中static_cast与dynamic_cast的使用场景,并介绍一些C++中的其他*cast。static_cast你应该在牵涉到自定义的C++ class类型转换中用到它。因为它会帮你做一些静态类型检查。如下的例子是一种可能的应用场景:#include <iostream>class Me { public: void print() { std::cout << "Hello" << std::endl;
c++: 单例模式(Singleton)的最优写法 目的本例简介C++中单例模式的最优写法。实现基础写法下面的代码是C++单例的基础写法,在静态函数Singleton::getInstance()中定义了Singleton的静态变量对象,并返回此对象的引用。由于C++函数的静态变量唯一性,可以确保例子中s对象的唯一性,线程同步,以及静态对象间的依赖关系等问题。#include <iostream>class Singleton { public: static Singleton &getInstance() {
QT: 使用QProcess启动进程并实时获取标准输出 目的本例介绍如何使用QProcess启动进程并实时获取启动进程的标准输出后显示。实现本例在QT的MainWindow 启动后会每个1秒在控制台打印ping的log,如下图所示#include "mainwindow.h"#include <QApplication>#include <QProcess>#include <QDebug>int main(int argc, char *argv[]) { QApplication a(argc
QT: QML访问c++的对象属性 目的本文简介QML与C++ QObject 对象的属性(Property)、方法(Method)与信号(Signal)互操作[1],并举例说明。基于上一篇文章中介绍的QML对象与C++对象绑定后,QML可以更进一步的与C++对象的属性(Attribute)、方法(Method)与信号(Signal)进行互操作。属性如下的例子使用 Q_PROPERTY()宏定义 author属性(Property)的类型为(QString),以及auhor属性对应的 set(setAuthor)方法, get(aut
QT: QML调用c++代码 目的本文简述如何在qml中调用c++代码。通过qml调用c++主要有两种方法:使用qmlRegisterType()与setContextProperty()。下面依次介绍qmlRegisterType新建Qt工程后,编辑mainwindow.h如下。程序运行后,会调用 CallMe.hello()函数输出相关信息。#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QDebug&g
QT: Hello QML 目的本文简述如何使用QWidget加载QML并显示Hello World。我用的QT版本为5.12。代码首先使用QTCreator新建 空的qt widget程序。Build System 选择qmake。取消勾选Generate form选项。在.pro文件中增加qt quick 的依赖库,包括qml quickwidgets widgets。为工程添加qml.qrc资源文件。首先右键工程,点击Add New…名称输入qml.qrc。再为qml.qr
Python: FFT的输入与输出分析 Python: FFT目的数据生成FFT分辨率总结引用目的本文简述如何使用numpy的fft lib进行快速傅里叶变换,以及对fft变换后结果的分析。由于水平有限,不当之处望指正。数据生成使用如下代码生成仿吉他C和弦声音片段,如下代码所示。import numpy as npimport pandas as pdimport matplotlib.pyplot as plt%matplotlib inlineimport librosaimport IPython.display as
Python: 傅里叶级数 目标本文简述傅里叶级数(Fourier Series),并使用Python实现简单的傅里叶级数的展开。简介傅里叶级数用一句话概括为:任何周期函数都可以用正弦函数和余弦函数构成的无穷级数来表示。如下图的周期函数f(t),可将其展开为:举例说明,如何将上图的方波分解为为多个sin(t)与cos(t)的组合呢?先看如下函数的图像:如果在f(t)中增加一项,则图像变为:再加一项试试:所以,当分解的多项式越来越多,到正无穷时,图像就变成方波了(当然这不可能)。对上述方波的傅里叶变