我有一个数据集,大约有900个单独的部分,所有数据都可以追溯到13个月。我希望r使用线性回归来告诉我下个月我应该放养多少部分,使用我有数据作为输入的13个月滚动期。
datset说明: 我有大约900行和13列填充列,其中一列等待填写结果。第1列是部件号,后面是前几个月的13列,最后一列是我标记为“mlsuggestions”的空列
以下是我目前正在使用的代码:
lmtest <- my.data
set.seed(101)
sample <- sample.split(lmtest$mlsuggestions, SplitRatio = 0.7)
train <- subset(lmtest, sample == TRUE)
test <- subset(lmtest, sample == FALSE)
model1 <- lm(mlsuggestions ~ Dec_17 + Nov_17 + Oct_17 + Sept_17 +
Aug_17 + Jul_17 + Jun_17 + May_17 + Apr_17 + Mar_17 + Feb_17 +
Jan_17 + Dec_16, data = lmtest)
lmtest$mlsuggestions <- model1$coefficients
从最后一行开始,我得到的是一条错误消息:
Error in `$<-.data.frame`(`*tmp*`, mlsuggestions, value = c(0, 0, 0, 0, :
replacement has 14 rows, data has 886
据我了解,该模型只有14个系数放入我的886行。这是否意味着我的模型是按列而不是按行计算的?如果是这种情况,我该如何改变呢?
如果情况不是这样,我试图将模型的结果反馈回我的数据的方式有问题吗?
答案 0 :(得分:1)
我认为你在broom
包中实现后的目标。看看以下结果是否适合你。
library(broom)
df <- augment(model1)
例如
model1 <- lm(Sepal.Length ~ ., iris)
library(broom)
df <- augment(model1)
df[1:5, ]
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species .fitted .se.fit .resid .hat
#1 5.1 3.5 1.4 0.2 setosa 5.004788 0.04479188 0.09521198 0.02131150
#2 4.9 3.0 1.4 0.2 setosa 4.756844 0.05514933 0.14315645 0.03230694
#3 4.7 3.2 1.3 0.2 setosa 4.773097 0.04690495 -0.07309695 0.02336968
#4 4.6 3.1 1.5 0.2 setosa 4.889357 0.05135928 -0.28935683 0.02801904
#5 5.0 3.6 1.4 0.2 setosa 5.054377 0.04736842 -0.05437691 0.02383379
# .sigma .cooksd .std.resid
#1 0.3077918 0.0003570856 0.3136729
#2 0.3076565 0.0012517183 0.4742964
#3 0.3078349 0.0002317688 -0.2410693
#4 0.3069173 0.0043961179 -0.9565608
#5 0.3078627 0.0001309299 -0.1793744