如何将我的模型的结果放入我的数据框?

时间:2018-01-15 22:49:06

标签: r machine-learning linear-regression

我有一个数据集,大约有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行。这是否意味着我的模型是按列而不是按行计算的?如果是这种情况,我该如何改变呢?

如果情况不是这样,我试图将模型的结果反馈回我的数据的方式有问题吗?

1 个答案:

答案 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