【发布时间】:2017-04-11 20:18:05
【问题描述】:
我有一个包含两列的数据框
var_1<-seq(1:252)
var_2<-runif(1:252)*1000
my_new_df<-data.frame(var_1,var_2)
names(my_new_df)<-c("Time_values","Count")
train_poly_data<-my_new_df[1:150,c("Time_values","Count")] # training data set
valid_poly_data<-my_new_df[151:200,c("Time_values","Count")] # validation data set
test_poly_data<-my_new_df[201:252,c("Time_values","Count")] # test data set
#obtain a polymomial regression model with 20 Degrees
poly_tr<-lm(train_poly_data$Count ~ poly(train_poly_data$Time_values,degree=20,raw = TRUE))
summary(poly_tr)
#getting the following warnings
Warning messages:
1: 'newdata' had 50 rows but variables found have 150 rows
2: In predict.lm(poly_tr, valid_poly_data) :
prediction from a rank-deficient fit may be misleading
这是我需要做的,
我需要在训练、验证、测试数据集中拆分数据框 接下来我想使用训练数据使用多项式回归并使用验证数据进行验证
但是我不断收到错误,我该如何解决这个问题,我也有兴趣找到多项式的最佳次数,因为我想看看随机选择的多项式次数 20 是否有点正确?
欢迎任何建议或帮助指出我的错误。
如何解决此警告?我确实理解引发警告是因为我们在训练数据集中有 150 个值,在验证数据集中有 50 个值
【问题讨论】:
-
你的 predict.lm 代码在哪里?
-
my_pred
-
抱歉忘记粘贴了
-
找不到第一个警告的原因,但第二个是由于:
if (p < ncol(X) && !(missing(newdata) || is.null(newdata))); warning("prediction from a rank-deficient fit may be misleading")(在predict.lm)其中p <- object$rank和X <- model.matrix(Terms, m, contrasts.arg = object$contrasts)。仅使用degree=10时,警告对我来说消失了,这对您来说似乎不是解决方案。 -
Phann,感谢您的努力和洞察力