我有一个大约900个零件的数据集,这些数据可以追溯到13个月。我希望使用线性回归来告诉我下个月我应该储备多少零件,使用我拥有数据的那13个月的滚动期作为输入。

数据集描述:
我大约有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


因此,据我了解,该模型在我的886行中只有14个系数。这是否意味着我的模型是按列而不是按行计算的?如果是这样,我该如何更改?

如果不是这种情况,我尝试将模型结果放回数据中的方式是否有问题?

最佳答案

我认为您在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

关于r - 如何将模型的结果放入数据框?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48271778/

10-12 17:32
查看更多