我如何使用Amelia简单地输入R中的NA值,然后以70:30的比例将数据集划分为数据集和训练集?
我想从一个数据集(14个变量,200个观察值)中输入值,然后将其分为70%的训练数据集和30%的测试数据集我如何使用Amelia简单地输入R中的NA值,然后以70:30的比例将数据集划分为数据集和训练集?,r,R,我想从一个数据集(14个变量,200个观察值)中输入值,然后将其分为70%的训练数据集和30%的测试数据集 colnames(mydata) <- c("age", "sex", "cp", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal", "num") mydata <- subset(mydata, select=-c(ca,thal)) 每次
colnames(mydata) <- c("age", "sex", "cp", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal", "num")
mydata <- subset(mydata, select=-c(ca,thal))
每次使用Amelia
进行插补时,我都会收到不同类型的错误消息。我正在寻找一种最简单的方法,让Amelia
输入整个数据集
colnames(mydata) <- c("age", "sex", "cp", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal", "num")
mydata <- subset(mydata, select=-c(ca,thal))
colnames(mydata)Amelia检查变量中的类别是否过多。这是通过计算变量的唯一出现次数并将其与三分之一的行进行比较来完成的
例如,如果有300行数据,并且列中有100多个唯一值(不包括NA),amelia将返回此错误。在如此少的记录上输入如此多的不同值几乎是不可能的,您不妨填写随机值。您可以考虑是否需要此专栏,获取更多数据,或者查看是否可以找到一种基于领域知识的方法来填充缺少的数据
有关Amelia的更多信息,请查看vignette,但如果您想通读代码,请查看github页面。你可以找到它。尤其是错误代码可能很容易通读(amcheck.r)
以70/30的比例拆分数据可以通过多种方式完成。我使用的两种方法是:
library(caTools)
# set.seed for reproducibility.
set.seed(144)
split <- sample.split(dataframe$"Variable to split on", SplitRatio = 0.7)
train <- subset(dataframe, split == TRUE)
test <- subset(dataframe, split == FALSE)
库(caTools)
#设置种子以获得再现性。
种子集(144)
谢谢你的帮助@phiver,我很感激。我通读了关于Amelia的小插曲和手册,我得到了插补,但仍然不确定如何将数据集划分为训练集和测试集。我希望将其随机分为70%的训练数据和30%的测试数据,然后找出测试集的p值。对不起,如果这让人困惑的话,我正试图更好地理解我教授的要求。再次感谢你的帮助!