Main Content

boxcox

Box-Cox 变换

不建议对 boxcoxtsobj 参数使用 fints 对象。使用 fts2timetablefints 对象转换为 timetable 对象,然后使用 timetable2tabletable2array

说明

示例

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

示例

[transfts,lambda] = boxcox(tsobj) 使用 Box-Cox 变换方法将金融时间序列对象 tsobj 变换为 transfts。它还计算变换参数 λ。

示例

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

示例

transdat = boxcox(lambda,tsobj) 对于 Box-Cox 变换使用特定的 λ 变换 tsobj。此语法未找到最大化 LLF 的最优 λ 值。

示例

全部折叠

使用 boxcox 将金融时间序列对象中包含的数据序列变换为另一组具有相对正态分布的数据序列。

根据提供的 whirlpool.dat 数据文件创建金融时间序列对象。

whrl = ascii2fts('whirlpool.dat', 1, 2, []);
Warning: FINTS is not recommended. Use TIMETABLE instead. For more information, see <a href="matlab:web(fullfile(docroot, 'finance/convert-from-fints-to-timetables.html'))">Convert Financial Time Series Objects (fints) to Timetables</a>.

使用线性方法计算的值在 whrl 中填充所有用 NaN 表示的缺失值。

f_whrl = fillts(whrl);
Warning: FINTS is not recommended. Use TIMETABLE instead. For more information, see <a href="matlab:web(fullfile(docroot, 'finance/convert-from-fints-to-timetables.html'))">Convert Financial Time Series Objects (fints) to Timetables</a>.

使用 Box-Cox 变换将非正态分布的填充数据序列 f_whrl 变换为正态分布的数据序列。

bc_whrl = boxcox(f_whrl);
Warning: FINTS is not recommended. Use TIMETABLE instead. For more information, see <a href="matlab:web(fullfile(docroot, 'finance/convert-from-fints-to-timetables.html'))">Convert Financial Time Series Objects (fints) to Timetables</a>.

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

subplot(2, 1, 1);
hist(f_whrl.Close);
Warning: FINTS is not recommended. Use TIMETABLE instead. For more information, see <a href="matlab:web(fullfile(docroot, 'finance/convert-from-fints-to-timetables.html'))">Convert Financial Time Series Objects (fints) to Timetables</a>.
grid; title('Nonnormally Distributed Data');
subplot(2, 1, 2);
hist(bc_whrl.Close);
Warning: FINTS is not recommended. Use TIMETABLE instead. For more information, see <a href="matlab:web(fullfile(docroot, 'finance/convert-from-fints-to-timetables.html'))">Convert Financial Time Series Objects (fints) to Timetables</a>.
grid; title('Box-Cox Transformed Data');

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

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

输入参数

全部折叠

数据,指定为正列向量。

数据类型: double

金融时间序列对象,指定为 fints 对象。

数据类型: object

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

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

数据类型: double | struct

输出参数

全部折叠

数据 Box-Cox 变换,以向量形式返回。

金融时间序列 Box-Cox 变换,以向量形式返回。

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

详细信息

全部折叠

Box-Cox 变换

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

如果 λ 不等于 0,则

data(λ)=dataλ1λ

如果 λ 等于 0,则

data(λ)=log(data)

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

版本历史记录

在 R2006a 之前推出