计算和比较复数的直方图

机器算法验证 数据可视化 拟合优度 直方图
2022-03-31 14:15:37

如果我有一个具有实部和虚部的复数的一维序列,我如何计算该序列的直方图?我是否分别计算实部和虚部的直方图?

此外,如果我得到一个复数序列的二维直方图,我如何应用拟合优度检验(例如检验)来比较复数的两个直方图?χ2

有没有关于复数直方图计算的好参考书?

这样的复数直方图将如何在视觉上表示?

1个回答

如果我有一个具有实部和虚部的复数的一维序列,我如何计算该序列的直方图?我是否分别计算实部和虚部的直方图?

复数只是一个有序的实数对(即实数的二元素向量),具有加法、乘法等算术运算符的扩展定义。复数数据集的可视化可以像任何其他由实数的双变量向量组成的数据集。将值视为双变量值以保留各部分之间的任何统计关系非常重要,因此构建实部和虚部的单独直方图通常不是一个好主意。

可视化复数向量的最佳方法是生成该数据的核密度估计器 (KDE),然后使用曲面图、等高线图或热图将其可视化,接管二维复数。(直方图只是 KDE 的笨拙版本;最好使用具有不依赖于任意 bin 选择的平滑内核的 KDE。)如果使用等高线图或热图,您可以轻松地叠加散点图数据值,它允许您查看原始数据以及该数据的估计密度。这是我会推荐的。

这是一个示例,说明在R. 在这段代码中,我们生成了一些随机的复杂数据,并使用包绘制了带有来自 KDE 的轮廓的数据的散点图ggalt这给出了原始数据的清晰可视化,并给出了其估计密度的轮廓轮廓。

#Generate random vector X consisting of n complex values
set.seed(1)
n   <- 100;
ARG <- 2*pi*runif(n);
MOD <- rgamma(n, shape = 2, scale = 10) + rgamma(n, shape = 5, scale = 12);
X   <- complex(modulus = MOD, argument = ARG);

#Generate scatterplot with KDE contours
library(ggplot2);
library(ggalt);
DATA <- data.frame(Real = Re(X), Imaginary = Im(X));
THEME <- theme(plot.title    = element_text(hjust = 0.5, size = 14, face = 'bold'),
               plot.subtitle = element_text(hjust = 0.5, face = 'bold'),
               axis.title.x  = element_text(hjust = 0.5, face = 'bold'),
               axis.title.y  = element_text(hjust = 0.5, face = 'bold'));
ggplot(DATA, aes(x = Real, y = Imaginary)) + THEME +
       geom_point(size = 4, alpha = 0.4) + geom_bkde2d(bandwidth = c(20, 20)) +
       ggtitle('Scatterplot of complex data values with kernel density contours');

在此处输入图像描述