概述
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 补全缺失数据,金融时间序列缺失值的补齐,增加时间长度的方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复