LOCF 插补和如何填补缺失的条目
LOCF imputation and how to fill missing entries
我正在处理以下数据集,我正在尝试填充 VISUAL52 变量的缺失条目,通过 LOCF 方法(上次观察结转)输入数据。
library(readr)
library(mice)
library(finalfit)
library(Hmisc)
library(lattice)
library(VIM)
library(rms)
library(zoo)
> hw3
# A tibble: 240 x 11
treat LINE0 LOST4 LOST12 LOST24 LOST52 VISUAL0 VISUAL4 VISUAL12 VISUAL24 VISUAL52
<fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2 12 1 3 NA NA 59 55 45 NA NA
2 2 13 -1 0 0 2 65 70 65 65 55
3 1 8 0 1 6 NA 40 40 37 17 NA
4 1 13 0 0 0 0 67 64 64 64 68
5 2 14 NA NA NA NA 70 NA NA NA NA
6 2 12 2 2 2 4 59 53 52 53 42
7 1 13 0 -2 -1 0 64 68 74 72 65
8 1 8 1 0 1 1 39 37 43 37 37
9 2 12 1 2 1 1 59 58 49 54 58
10 1 10 0 -4 -4 NA 49 51 71 71 NA
# ... with 230 more rows
我不知道我做得好不好,但我已经尝试以这种方式描述每次处理的 VISUAL52 变量的样本量、均值和标准误差(请告诉我我是否会更好地使用不同的功能)。
numSummary(hw3[,"VISUAL52", drop=FALSE], groups=hw3$treat,
statistics=c("mean", "se(mean)", "quantiles"),
quantiles=c(0,.25,.5,.75,1))
binnedCounts(hw3[hw3$treat == '1', "VISUAL52", drop=FALSE])
# treat = 1
binnedCounts(hw3[hw3$treat == '2', "VISUAL52", drop=FALSE])
# treat = 2
但是,关于插补部分,我从 data-table 包中 运行 函数 nafill(),但我返回了错误,您可能会在运行完整的程序后看到() 函数。
library(data.table)
imp_locf <- nafill(hw3$VISUAL52, "locf", nan=NA)
data_imputed <- complete(imp_locf)
*emphasized text*Error in UseMethod("complete_") :
no applicable method for 'complete_' applied to an object of class "c('double', 'numeric')"
我想知道为什么该函数会返回此错误,以及是否有人可能知道一些替代方法来使用 locf 方法估算数据并填充数据集中缺失的数据。
如果你想在你的数据集上应用 locf,你可以使用 imputeTS 包。
library(imputeTS)
hw3 <- na_locf(hw3)
hw3
或者如果您只想对 VISUAL52 变量使用 LOCF:
library(imputeTS)
hw3$VISUAL52 <- na_locf(hw3$VISUAL52)
hw3
另请记住,其他算法可能更适合您的数据。 imputeTS 提供了多种功能,尤其是对于时间序列插补 (more algorithms in imputeTS)。您似乎已经在使用的 mice 包具有额外的横截面数据算法。
我正在处理以下数据集,我正在尝试填充 VISUAL52 变量的缺失条目,通过 LOCF 方法(上次观察结转)输入数据。
library(readr)
library(mice)
library(finalfit)
library(Hmisc)
library(lattice)
library(VIM)
library(rms)
library(zoo)
> hw3
# A tibble: 240 x 11
treat LINE0 LOST4 LOST12 LOST24 LOST52 VISUAL0 VISUAL4 VISUAL12 VISUAL24 VISUAL52
<fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2 12 1 3 NA NA 59 55 45 NA NA
2 2 13 -1 0 0 2 65 70 65 65 55
3 1 8 0 1 6 NA 40 40 37 17 NA
4 1 13 0 0 0 0 67 64 64 64 68
5 2 14 NA NA NA NA 70 NA NA NA NA
6 2 12 2 2 2 4 59 53 52 53 42
7 1 13 0 -2 -1 0 64 68 74 72 65
8 1 8 1 0 1 1 39 37 43 37 37
9 2 12 1 2 1 1 59 58 49 54 58
10 1 10 0 -4 -4 NA 49 51 71 71 NA
# ... with 230 more rows
我不知道我做得好不好,但我已经尝试以这种方式描述每次处理的 VISUAL52 变量的样本量、均值和标准误差(请告诉我我是否会更好地使用不同的功能)。
numSummary(hw3[,"VISUAL52", drop=FALSE], groups=hw3$treat,
statistics=c("mean", "se(mean)", "quantiles"),
quantiles=c(0,.25,.5,.75,1))
binnedCounts(hw3[hw3$treat == '1', "VISUAL52", drop=FALSE])
# treat = 1
binnedCounts(hw3[hw3$treat == '2', "VISUAL52", drop=FALSE])
# treat = 2
但是,关于插补部分,我从 data-table 包中 运行 函数 nafill(),但我返回了错误,您可能会在运行完整的程序后看到() 函数。
library(data.table)
imp_locf <- nafill(hw3$VISUAL52, "locf", nan=NA)
data_imputed <- complete(imp_locf)
*emphasized text*Error in UseMethod("complete_") :
no applicable method for 'complete_' applied to an object of class "c('double', 'numeric')"
我想知道为什么该函数会返回此错误,以及是否有人可能知道一些替代方法来使用 locf 方法估算数据并填充数据集中缺失的数据。
如果你想在你的数据集上应用 locf,你可以使用 imputeTS 包。
library(imputeTS)
hw3 <- na_locf(hw3)
hw3
或者如果您只想对 VISUAL52 变量使用 LOCF:
library(imputeTS)
hw3$VISUAL52 <- na_locf(hw3$VISUAL52)
hw3
另请记住,其他算法可能更适合您的数据。 imputeTS 提供了多种功能,尤其是对于时间序列插补 (more algorithms in imputeTS)。您似乎已经在使用的 mice 包具有额外的横截面数据算法。