Main Content

boxcox

博克斯-考克斯变换

说明

示例

[transdat,lambda] = boxcox(data) 使用博克斯-考克斯变换方法将数据向量 data 变换为 transdat。它还计算变换参数 λ。

示例

transdat = boxcox(lambda,data) 对于博克斯-考克斯变换使用特定的 λ 变换 data。此语法未找到最大化 LLF 的最优 λ 值。

示例

全部折叠

使用 boxcox 将数据向量中包含的数据序列变换为另一组具有相对正态分布的数据序列。

加载 SimulatedStock.mat 数据文件。

load SimulatedStock.mat

使用博克斯-考克斯变换将非正态分布的填充数据序列 TMW_CLOSE 变换为正态分布的数据序列。

 [Xbc, lambdabc] = boxcox(TMW_CLOSE)
Xbc = 1000×1

    7.8756
    7.8805
    7.9173
    7.8557
    7.8245
    7.7844
    7.7811
    7.8029
    7.8015
    7.7229
      ⋮

lambdabc = 0.2151

将正态(高斯)概率分布函数的 TMW_CLOSE 数据序列的结果与非正态分布的 TMW_CLOSE 数据序列的结果进行比较。

subplot(2, 1, 1);
histogram(TMW_CLOSE);
grid; title('Nonnormally Distributed Data');
subplot(2, 1, 2);
histogram(Xbc);
grid; title('Box-Cox Transformed Data');

Figure contains 2 axes objects. Axes object 1 with title Nonnormally Distributed Data contains an object of type histogram. Axes object 2 with title Box-Cox Transformed Data contains an object of type histogram.

顶部的条形图表示数据序列 TMW_CLOSE(即原始数据序列)的概率分布函数。分布偏向左侧(非正态分布)。底部的条形图左倾程度较低。如果您绘制具有相似均值和标准差的高斯概率分布函数 (PDF),则变换后的数据分布逼近正态分布(高斯)。当您检查生成的对象 Xbc 的内容时,会发现与原始对象 TMW_CLOSE 完全相同的对象,但内容是变换后的数据序列。

输入参数

全部折叠

数据,指定为正列向量。

数据类型: double

Lambda,指定为标量数值或结构体。

如果输入 data 是向量,则 lambda 是标量。如果输入是金融时间序列对象 (tsobj),则 lambda 是具有类似对象分量的字段的结构体。例如,如果 tsobj 包含序列名称 OpenClose,则 lambda 包含字段 lambda.Openlambda.Close

数据类型: double | struct

输出参量

全部折叠

数据的博克斯-考克斯变换,以向量形式返回。

Lambda 变换参数,以数值形式返回。

详细信息

全部折叠

博克斯-考克斯变换

boxcox 将非正态分布的数据转换为近似正态分布的数据集。博克斯-考克斯变换是一系列幂变换。

如果 λ 不等于 0,则

data(λ)=dataλ1λ

如果 λ 等于 0,则

data(λ)=log(data)

对数是自然对数(以 e 为底数的对数)。该算法要求找到最大化对数似然函数 (LLF) 的 λ 值。搜索使用 fminsearch 进行。

版本历史记录

在 R2006a 之前推出

全部展开

另请参阅