我是靠谱客的博主 坚强日记本,最近开发中收集的这篇文章主要介绍matlab 补全缺失数据,金融时间序列缺失值的补齐,增加时间长度的方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Fillts的使用方式

注意:fillts由于调用的是插值法,故只能对中间的nan值进行补齐,两端的值不能。

(1)fillts(oldfts)

对oldfts中的nan(nan也称空值,也称无限大的值)用线性插值法补齐。

(2)NEWFTS = FILLTS(OLDFTS, FILLMETHOD)

最常用的一种方式,FILLMETHOD是插值方式,具体有一下几种:

1.线性插值方法 ‘linear’、‘l’、‘le’

2.3次多项式插值‘cubic’、‘c’、‘ce’

3.样条插值‘spline’、‘s’、‘se’

4.最近插值法‘nearest‘、‘n’、‘ne‘

5.逐段光滑的三次Hemite多项式法‘pchip‘、‘p’、‘pe’

6.

常数插值。用固定的常数代替缺失值。

7.

“zero-order hold”插值,fill_method=‘zero’,用该nan的前一个值代替,进行插值。

(3)NEWFTS = FILLTS(OLDFTS, FILLMETHOD,

NEWDATES)

在原来的时间对象中加入新的时间数据(NEWDATES),即增加时间序列的长度,增加若干个日期。

根据指定的插值方式,函数自动生成新的时间数据(NEWDATES)对应的数据。如果新的时间和原来的时间有重合的,以原来的值为准。并且,如果原来的时间序列本身也存在缺失值,那么也会对其进行插值。如果不指定插值方式,则新时间对应的时间序列数据都是nan。

NEWDATES的格式可以是日期列向量,单个字符,或包含字符的列数组。如果NEWDATES不存在,则将会把[]放入NEWDATES参数所在的位置。如果NEWDATES包含时间信息(注意日期和时间的区别,日期最小单位“日”,时间最小单位“秒”,这里都是取分钟),则NEWDATES也应包含时间向量,或者NEWDATES将被指定时间“00:00”。

NEWFTS = FILLTS(OLDFTS, FILLMETHOD, NEWDATES,

SORTMODE)

SORTMODE是排序参数,默认为“0”,代表不进行重新排序,新加进的时间直接放到后面,若为“1”,则代表按时间进行重新排序。

(4)包含“时间”的插值

法一,逐个列出时间法:

NEWFTS = FILLTS(OLDFTS, FILLMETHOD, NEWDATES,

{'T1','T2',...}, SORTMODE)

其中{'T1','T2',...}是NEWDATES对应的时间,比如,NEWDATES是日度序列,{'T1','T2',...}可以是{'11:00','12:00',’13:00’},表示具体的一天对应的时间,这时所有时间都逐个列了出来,故本人给其起名曰“逐个列出时间法”

法二,区间法:

把时间信息作为一个区间输入,这时要求时间的起点,时间的终点,以及步长,步长的单位只能是分。比如从11点到15点这个区间,时间起点是11点,终点是15点,11点、12点、13点、十四点、十五点,相邻的不长为一个小时,也就是60分钟。

NEWFTS = FILLTS(OLDFTS, FILLMETHOD, NEWDATES,

'SPAN', {'TS','TE'}, DELTA, SORTMODE)

输入参数:

'SPAN':表示以区间的形式进行输入时间。

{'TS','TE'}: TS,即time of start,时间起点。TE:Time of

end

DELTA:时间区间的步长,德尔塔(跟我们学的等差数列中的类似)

例子参见如下的帮助文件:

来自于matlab帮助文件

@FINTS/FILLTS replaces the NaN's in a FINTS object through

interpolation.

NEWFTS =

FILLTS(OLDFTS) will replace the missing values (NaN's) in

OLDFTS

with via an

interpolation process using LINEAR interpolation.

Note:

'Filled' will be to the description in NEWFTS.

For

example:

%% Create the FINTS object %%

dates = ['01-Jan-2001';'01-Jan-2001'; '02-Jan-2001'; ...

'02-Jan-2001'; '03-Jan-2001';'03-Jan-2001'];

times = ['11:00';'12:00';'11:00';'12:00';'11:00';'12:00'];

dates_times = cellstr([dates, repmat(' ',size(dates,1),1),

times]);

myFts = fints(dates_times,[(1:3)'; nan; nan; 6],{'Data1'},1,

...

'My first FINTS')

%% Create the FINTS object %%

newFts = fillts(myFts)

newFts =

desc: Filled My first FINTS

freq: Unknown (0)

'dates: (6)' 'times: (6)' 'Data1: (6)'

'01-Jan-2001' '11:00' [ 1]

' " ' '12:00' [ 2]

'02-Jan-2001' '11:00' [ 3]

' " ' '12:00' [ 3.1200]

最后

以上就是坚强日记本为你收集整理的matlab 补全缺失数据,金融时间序列缺失值的补齐,增加时间长度的方法的全部内容,希望文章能够帮你解决matlab 补全缺失数据,金融时间序列缺失值的补齐,增加时间长度的方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部