【问题标题】:why predict function is printing the out put too many times in R software?为什么预测功能在 R 软件中打印输出太多次?
【发布时间】:2016-08-14 23:12:00
【问题描述】:

我用 R 程序创建了一个线性模型。我已经使用该模型预测了一个新变量。运行模型,它将打印 600 次预测的输出! (我们在数据集中拥有的变量数量)。 代码如下:

load(sports)
summary (sports)
ls(sports)
fit = lm(sport_score ~ sport_votes + sport_rating , data = sports)
summary(fit)

newdata = data.frame( sport_vote = 80, sport_rating = 7.7)

predict(fit, newdata, interval="predict") 

如何只打印一次输出?

【问题讨论】:

  • predict 的默认行为是为您提供每个完整案例的预测。如果这不是您想要的......然后阅读帮助页面并学习使用newdata 参数。
  • 为什么在newdata=data.frame() 通话中有data = sports?那肯定是不正确的。拿出来就没事了。
  • MrFlick 我做到了,但仍然遇到同样的问题。
  • 您可以dput(head(sports)) 并将输出粘贴到您的问题中以帮助我们重现您的问题吗?
  • 您需要在reproducible 上方创建您的示例,以便我们可以复制/粘贴到 R 中查看问题。您的 newdata data.frame 没有您认为的行,或者您指定了一个带有 $ 的公式(这很糟糕)。无论哪种方式,您都可能从上面的示例中遗漏了一些重要的内容。

标签: r linear-regression predict


【解决方案1】:

应该是:

predict(fit, newdata=newdata, interval="predict") 

第一个newdata是参数名。第二个newdata 是要使用的“值”的符号名称。 如果你不给newdata参数赋值,它只会寻找默认值,正如我所说的sports中的完整案例。

【讨论】:

  • 仍然打印输出 600 次。
  • 我无法复制这个问题 - fit <- lm(Sepal.Length ~ Sepal.Width, data=iris); newdata <- data.frame(Sepal.Width=30); predict(fit, newdata, interval="pred") 工作正常。
  • @Zapata:你需要向我们展示str(newdata的输出
  • > str(newdata) 'data.frame': 1 obs。 1 个变量:$ Sepal.Width: num 30 它实际上是打印相同的输出 600 次
  • @Zapata - 这听起来不太可能。如果您的newdata 现在根据iris 数据集拥有Sepal.Width,则它不应返回600 个预测。它要么因为变量不匹配而出错,要么返回 iris 拥有的 150 行。我认为您需要开始一个新的 R 会话并逐步完成您的代码。有点不对劲。
猜你喜欢
  • 2022-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-24
  • 1970-01-01
相关资源
最近更新 更多