gpt4 book ai didi

r - Predict() - 也许我不理解它

转载 作者:行者123 更新时间:2023-12-03 05:45:50 29 4
gpt4 key购买 nike

posted earlier today关于我使用 predict 函数时遇到的错误。我能够纠正这个问题,并认为我走在正确的道路上。

我有许多观察结果(实际值),并且有一些想要推断或预测的数据点。我使用 lm 创建模型,然后尝试将 predict 与将用作预测器输入的实际值一起使用。

此代码与我上一篇文章中的代码全部重复,但这里是:

df <- read.table(text = '
Quarter Coupon Total
1 "Dec 06" 25027.072 132450574
2 "Dec 07" 76386.820 194154767
3 "Dec 08" 79622.147 221571135
4 "Dec 09" 74114.416 205880072
5 "Dec 10" 70993.058 188666980
6 "Jun 06" 12048.162 139137919
7 "Jun 07" 46889.369 165276325
8 "Jun 08" 84732.537 207074374
9 "Jun 09" 83240.084 221945162
10 "Jun 10" 81970.143 236954249
11 "Mar 06" 3451.248 116811392
12 "Mar 07" 34201.197 155190418
13 "Mar 08" 73232.900 212492488
14 "Mar 09" 70644.948 203663201
15 "Mar 10" 72314.945 203427892
16 "Mar 11" 88708.663 214061240
17 "Sep 06" 15027.252 121285335
18 "Sep 07" 60228.793 195428991
19 "Sep 08" 85507.062 257651399
20 "Sep 09" 77763.365 215048147
21 "Sep 10" 62259.691 168862119', header=TRUE)

str(df)
'data.frame': 21 obs. of 3 variables:
$ Quarter : Factor w/ 24 levels "Dec 06","Dec 07",..: 1 2 3 4 5 7 8 9 10 11 ...
$ Coupon: num 25027 76387 79622 74114 70993 ...
$ Total: num 132450574 194154767 221571135 205880072 188666980 ...

代码:

model <- lm(df$Total ~ df$Coupon, data=df)

> model

Call:
lm(formula = df$Total ~ df$Coupon)

Coefficients:
(Intercept) df$Coupon
107286259 1349

预测代码(基于之前的帮助):

(这些是我想用来获取预测值的预测值)

Quarter = c("Jun 11", "Sep 11", "Dec 11")
Total = c(79037022, 83100656, 104299800)
Coupon = data.frame(Quarter, Total)

Coupon$estimate <- predict(model, newdate = Coupon$Total)

现在,当我运行该程序时,我收到以下错误消息:

Error in `$<-.data.frame`(`*tmp*`, "estimate", value = c(60980.3823396919,  : 
replacement has 21 rows, data has 3

我用来构建模型的原始数据框有 21 个观察值。我现在尝试根据模型预测 3 个值。

我要么没有真正理解这个函数,要么我的代码中有错误。

如果有帮助,我们将不胜感激。

谢谢

最佳答案

首先,你要使用

model <- lm(Total ~ Coupon, data=df)

不是 model <-lm(df$Total ~ df$Coupon, data=df) .

其次,说lm(Total ~ Coupon) ,您正在拟合一个使用 Total 的模型作为响应变量,Coupon作为预测器。也就是说,您的模型的形式为 Total = a + b*Coupon ,与 ab要估计的系数。请注意,响应位于 ~ 的左侧。 ,以及右侧的预测变量。

因此,当您要求 R 提供模型的预测值时,您必须提供一组新的预测器值,即 Coupon 的新值。 ,不是Total .

第三,根据你的newdata的规范来判断,看来您实际上正在寻找适合的模型 Coupon作为 Total 的函数,而不是相反。为此:

model <- lm(Coupon ~ Total, data=df)
new.df <- data.frame(Total=c(79037022, 83100656, 104299800))
predict(model, new.df)

关于r - Predict() - 也许我不理解它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9028662/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com