mydata.column_name mydata.drop('column_name', axis=1, inplace=True) Time-Series Specific Methods 时间序列分析专属方法 前推法(LOCF Last Observation Carried Forward,将每个缺失值替换为缺失之前的最后一次观测值)与后推法(NOCB,Next Observation Carried Backward,与LOCF LOCF插补法 ? 均值插补法 注:以上数据来自imputeTS库的tsAirgap;插补数据被标红。 library(imputeTS) na.random(mydata) # Random Imputation na.locf(mydata, option = "locf Carried Forward na.locf(mydata, option = "nocb") # Next Obs.
可以看到数据中存在缺失值,有一种叫末次观测值结转法(LOCF)可以填补缺失值,当非缺失值后面紧跟一个缺失值时,就用该缺失值填补后面的缺失值,直到所有缺失值都被填满。 zoo包提供了LOCF的一个实现,使用下面代码安装: install.packages("zoo") 下面用一组简单的向量演示: library(zoo) #> #> 载入程辑包:'zoo' #> The following objects are masked from 'package:base': #> #> as.Date, as.Date.numeric na.locf(c(1, 2 , NA, NA, 3, 1, NA, 2, NA)) #> [1] 1 2 2 2 3 1 1 2 2 同样的方法我们可以应用于现在处理的数据: na.locf(toy_quality$T01) #> 10 10 9 9 如果需要填补的数据很多,包含上千个产品,更好的做法是使用lapply进行自动分配: toy_quality[-1] = lapply(toy_quality[-1], na.locf
fill(df,X1,.direction = "up") # 将NA下一行的值填充到df的X1列中的NA 除此之外,类似原理的填充法还有均值填充法(用该变量的其余数值的均值来填充)、LOCF(last
这就是所谓的末次观测值结转法(LOCF)方法。
时间序列特定方法 前向观测(LOCF)和后向观测(NOCB) 这是一种分析纵向重复测量数据的常用统计方法,其中一些后续观测数据可能会丢失。纵向数据在不同的时间点跟踪相同的样本。
举例,我们现在需要对每个价格列调用na.locf()以去掉缺失值,先获取所有的价格列: cols = colnames(market_data) price_cols = cols[grep("^price market_data[, (price_cols) := lapply(.SD, zoo::na.locf), .SDcols = price_cols] head(market_data) #>
missForest Donor imputation (including various donor pool specifications) K最近邻法 sequential hotdeck (LOCF
na.rm=TRUE) x[is.na(x)] = median(x,na.rm=TRUE) na.approx(x) #对缺失值进行线性插值 na.spline(x) #对缺失值进行样条插值 na.locf
data.drop(['DATE'],1) # Dimensions of dataset n= data.shape[0] p= data.shape[1] 数据已经被清理并预处理完毕,缺失的股票和指数价格已经被LOCF
data_stocks.csv') # Dimensions of dataset n = data.shape[0] p = data.shape[1] 该数据集已经经过了清理与预处理,即损失的股票和股指都通过 LOCF'ed
data_stocks.csv') # Dimensions of dataset n = data.shape[0] p = data.shape[1] 该数据集已经经过了清理与预处理,即损失的股票和股指都通过 LOCF'ed
data_stocks.csv') # Dimensions of dataset n = data.shape[0] p = data.shape[1] 该数据集已经经过了清理与预处理,即损失的股票和股指都通过 LOCF'ed
n = data.shape[0] p = data.shape[1] # 将数据集转化为numpy数组 data = data.values 数据是经过清洗准备好的,这意味着指数数据和股票数据是遵循LOCF
,eDate,'1 month') # 画图 # 计算最近20日的最高价和10日的最低价 > minmax<-function(data,max=20,min=10){ + d1<-na.locf
,eDate,'1 month') # 画图 # 计算最近20日的最高价和10日的最低价 > minmax<-function(data,max=20,min=10){ + d1<-na.locf
目前支持两种填充规则: locf:用聚合组中之前出现的值填充; interpolate:对缺失的值做线性插值填充。