Calculate Statistics in LabVIEW

Dec. 28, 2022

Introduction

本博客学习的实例来自NI官方范例:分析,信号处理和数学\概率与统计\求各种统计量,VI名称为Statistics Solver.vi

该示例的前面板预览:

image-20221228120020298

程序框图预览:

image-20221228115945173


Build Process

while Loop

首先可以从程序框图中看到,整个程序是一个while循环,停止条件是点击停止按钮停止:

image-20221228121235050

在前面板中创建两个双精度(DBL)的输入控件,并且简单设置一下它们的默认输入值:

image-20221228122616560

注:这里方差的英文是variance,这里和接下来的几张图中写错了,后面的图像做出了纠正。

这两个输入控件相当于定义了$\sigma^2_X$和了$\sigma^2_Y$。之后,分别使用创建数组平方根创建特殊矩阵函数得到对角矩阵

\[\begin{bmatrix} \sigma_X&0\\ 0&\sigma_Y\\ \end{bmatrix}\]

image-20221228132821785

需要注意的是,在这里,创建特殊矩阵函数的matrix type输入是一个常量,并不在前面板中显示。

可以简单地检查一下结果:

image-20221228133219919

在前面板中插入一个经典的水平滑动杆,用于表示变量X和Y的相关度$\rho_{XY}$,取值范围为$[-1,1]$:

image-20221228134212483

之后,使用了三个创建矩阵函数获得矩阵:

\[\begin{bmatrix} 1&\rho_{XY}\\ \rho_{XY}&1\\ \end{bmatrix}\]

image-20221228135910373

需要注意的是,第三个创建矩阵函数需要右键将其设置为“按行添加”的模式。

之后,就是将两部分矩阵进行计算,得到协方差矩阵(covariance matrix)$\Sigma$:

\[\Sigma=\begin{bmatrix} \sigma_X&0\\ 0&\sigma_Y\\ \end{bmatrix}\begin{bmatrix} 1&\rho_{XY}\\ \rho_{XY}&1\\ \end{bmatrix}\begin{bmatrix} \sigma_X&0\\ 0&\sigma_Y\\ \end{bmatrix}^T=\begin{bmatrix} \sigma_X^2&\sigma_X\sigma_Y\rho_{XY}\\ \sigma_X\sigma_Y\rho_{XY}&\sigma_Y^2\\ \end{bmatrix}\]

image-20221228141416337

根据相关系数的定义:

定义$\mathrm{Cov}(X,Y)/(\sigma_X\sigma_Y)$为$X$,$Y$的相关系数,并记作$\mathrm{Corr}(X,Y)$,也记作$\rho_{XY}$。

可以将上式化为:

\[\Sigma=\begin{bmatrix} \mathrm{Cov}(X,X)&\mathrm{Cov}(X,Y)\\ \mathrm{Cov}(Y,X)&\mathrm{Cov}(Y,Y)\\ \end{bmatrix}\]

而这正是协方差矩阵的定义。

之后,对协方差矩阵$\Sigma$进行一系列的操作,其最终目的是将$\Sigma$分解为$AA^T$的形式:

image-20221228155245592

创建三个输入控件,分别是X的平均值、Y的平均值以及种子(seed):

image-20221228152716928

之后,根据二维高斯白噪声$N(0,I)$生成随机数,并利用隧道将数据循环内部的数据传出,我们可以观察一下输出的数据:

image-20221228160958157

注:上述生成服从多维正态分布随机数的过程可以参见博客:The processing methods for ill-conditioned SCM in MATLAB fitgimdist, mahal and mvnrnd functions in case of extremely small sample - What a starry night~.

这些输出的值,就可以用于计算统计量和绘制统计图像。

Sample mean and sample variance

利用标准差和方差函数,分别计算X和Y的均值和方差:

image-20221228162521348

Correlation coefficient and MSE

Spearman相关系数、$R^2$相关系数、Kendall相关系数、均方差的这些值的计算都依赖于X值和Y值:

image-20221228163102904

注:图像有误,右边应当有连线。

Sample covariance

计算X和Y的样本协方差:

image-20221228163424100

注:X和Y的样本协方差表示样本协方差矩阵右上角的那个元素。

Scatter plot

散点图是这里面比较难绘制的图像,因为需要画出一条用于示意的边界线。

斜坡信号函数(Ramp Pattern VI - NI),设置该函数的采样点为20,斜坡的末端值为$2\pi$。为了看出这部分的效果,我们将整个结果更改为条件for结构,执行两次观察一下结果:

image-20221228144345720

之后,将采样点输入到正弦与余弦函数中,并将赋值扩大3倍,观察一下结果:

image-20221228145217547

将结果与协方差矩阵分解后的矩阵相乘,并与X与Y的平均值相加。将X与Y的值捆绑在一起,之后绘制出边界线。

image-20221228164832522

之后,将上面的X与Y的散点绘制在同一张图中:

image-20221228165302321

X and Y plot with respect to t

X和Y的趋势图就是X和Y随t(sample number)变化的曲线:

image-20221228170313409

这里需要注意的是,两个趋势图的横纵坐标的捆绑顺序。对于X的趋势图而言,是先t后X;对于Y的趋势图,是先Y后t。

Histograms

直方图的绘制:

image-20221228172154853