R预测缺失值
R predict missing values
我应该如何根据 R 中的其他值预测缺失值 NA?平均值是不够的。
所有值都是可靠的 - 列值是树木范围率,行值是三米高度。
我的 excel 文件是 here。
有什么办法可以做到吗?我一直在尝试使用预测功能但没有成功。
有多种方法可以解决此问题,但这里是一种方法。我也试过在你的数据集上使用它,但它要么太小,要么有太多线性组合,要么是其他原因,因为它没有收敛。
阿米莉亚 - http://fastml.com/impute-missing-values-with-amelia/
data(mtcars)
mtcars1<-mtcars[rep(row.names(mtcars),10),] #increasing dataset
#inserting NAs into dataset
insert_nas <- function(x) {
len <- length(x)
n <- sample(1:floor(0.2*len), 1) #randomly choosing # of missing obs
i <- sample(1:len, n) #choosing which to make missing
x[i] <- NA
x
}
mtcars1 <- sapply(mtcars1, insert_nas)
ords = c( 'cyl','hp','vs','am','gear','carb' ) #integers - your dataset has no integers so don't specify this
#idvars = c( 'these', 'will', 'be', 'ignored' )
#noms = c( 'some', 'nominal', 'columns' ) #categorical
a.out = amelia( mtcars1, ords = ords)
a.out$imputations[[1]]
#you can also ensemble your imputations if you'd like. Here we ensemble 3 of the 5 returned imputations
final_data<-as.data.frame(sapply(colnames(a.out$imputations[[1]]),function(i)
rowMeans(cbind(a.out$imputations[[1]][,i],a.out$imputations[[2]][,i],a.out$imputations[[3]][,i]))))
我应该如何根据 R 中的其他值预测缺失值 NA?平均值是不够的。
所有值都是可靠的 - 列值是树木范围率,行值是三米高度。
我的 excel 文件是 here。
有什么办法可以做到吗?我一直在尝试使用预测功能但没有成功。
有多种方法可以解决此问题,但这里是一种方法。我也试过在你的数据集上使用它,但它要么太小,要么有太多线性组合,要么是其他原因,因为它没有收敛。
阿米莉亚 - http://fastml.com/impute-missing-values-with-amelia/
data(mtcars)
mtcars1<-mtcars[rep(row.names(mtcars),10),] #increasing dataset
#inserting NAs into dataset
insert_nas <- function(x) {
len <- length(x)
n <- sample(1:floor(0.2*len), 1) #randomly choosing # of missing obs
i <- sample(1:len, n) #choosing which to make missing
x[i] <- NA
x
}
mtcars1 <- sapply(mtcars1, insert_nas)
ords = c( 'cyl','hp','vs','am','gear','carb' ) #integers - your dataset has no integers so don't specify this
#idvars = c( 'these', 'will', 'be', 'ignored' )
#noms = c( 'some', 'nominal', 'columns' ) #categorical
a.out = amelia( mtcars1, ords = ords)
a.out$imputations[[1]]
#you can also ensemble your imputations if you'd like. Here we ensemble 3 of the 5 returned imputations
final_data<-as.data.frame(sapply(colnames(a.out$imputations[[1]]),function(i)
rowMeans(cbind(a.out$imputations[[1]][,i],a.out$imputations[[2]][,i],a.out$imputations[[3]][,i]))))