从 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 来说是个好习惯。
我有一条曲线,一个散点图,它是我正在使用的数据集的图(名为 '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 来说是个好习惯。