从 R 中的数据集中减去拟合多项式

Subtracting a fitted polynomial from a dataset in R

我有一条曲线,一个散点图,它是我正在使用的数据集的图(名为 'mydata'),另一条曲线是我从数据集。 散点图是用一个简单的绘图函数得到的:

plot(mydata)

我用于拟合的代码是:

fit<-lm(mydata$Volts ~ poly(mydata$Frequency, 2, raw=TRUE),data=mydata)
#summary(fit)
lines(mydata$Frequency, predict(fit))

现在,我想从数据集中减去拟合多项式。以下是我的方法:

given<-plot(mydata)
fit<-lm(mydata$Volts ~ poly(mydata$Frequency, 2, raw=TRUE),data=mydata)
new<-lines(mydata$Frequency, predict(fit))
corrected<-given-new
plot(corrected)

我收到的错误是:

Error in plot(corrected) : object 'corrected' not found

我该如何纠正?

您似乎在尝试减去图形元素。在尝试绘制数据之前,您应该对数据执行任何 math/operations。像下面这样的东西可能会起作用。然而,如果没有样本数据,这只是一个有根据的猜测。

given <- mydata$Volts
fit <- lm(mydata$Volts ~ poly(mydata$Frequency, 2, raw=TRUE),data=mydata)
new <- predict(fit)
corrected <- given-new
plot(mydata$Frequency, corrected)

我 运行 一个 reprex(虽然从技术上讲,我需要一个 运行dom seed 来获得一个真正的 reprex,但由于代码的实际问题,这在这里并不重要)废话数据。

volts=rnorm(50,mean=220,sd=5)
frequency=runif(50,min=30,max=90)

mydata=data.frame(Volts=volts,Frequency=frequency)
given<-plot(mydata)
fit<-lm(mydata$Volts ~ poly(mydata$Frequency, 2, raw=TRUE),data=mydata)
new<-lines(mydata$Frequency, predict(fit))
corrected<-given-new
plot(corrected)

我的回答范围仅限于解释为什么会出现 not found 错误。 Daniel 的代码向您展示了修复方法。

我不确定为什么没有选择 Daniel O 的响应,因为它有效。我知道当你清楚地 定义 某些东西并且你的源代码就在你面前时,解释器却说 NOT FOUND 是令人沮丧的。当您遇到这种情况时,这里吸取的教训是检查 NULL。这对 R 来说是个好习惯。