UseMethod("predict") 错误:没有适用于 'predict' 的方法应用于 class 的对象“c('double', 'numeric')
Error in UseMethod("predict") : no applicable method for 'predict' applied to an object of class "c('double', 'numeric')
我不是 R 专家。我正在尝试计算多项式模型生成的偏差:
f <- function(x) sin(x-5)/(x-5)
# From which we can sample datasets:
N <- 20
x <- runif(N,0,15)
t <- f(x) + rnorm(N, sd=0.1)
t 是生成数据的函数,我使用标准差为 0.2 的高斯误差的同步函数。
为了创建点 x,我使用 0 到 15 的均匀分布形式。
plot.bias <- function (f, polydeg) {
plot(data.frame(x, t))
curve(f, type="l", col="green", add=TRUE)
polyfit <- lm(t ~ poly(x, polydeg, raw=TRUE))
p <- polynom(coef(polyfit))
curve(p, col="red", add=TRUE)
points(x, calc.bias(f, polydeg, x), col="blue")
abline(h=0, col='blue')
}
这是一个函数,它首先绘制数据,然后绘制原始生成曲线,然后计算给定次数的回归多项式,绘制它,最后绘制偏差。偏差由以下给出误差的函数计算:
calc.bias <- function (f, polyfit, point) {
predictions <- numeric(0)
print(class(point))
for (i in 1:100)
{
x <- runif(N, 0, 15)
t <- f(x) + rnorm(N, sd=0.2)
d <- data.frame(point)
add <- predict(polyfit, newdata = data.frame(point))
predictions <- c(predictions, add)
}
return((f(point)-mean(predictions))^2)
}
我所做的是使用我们的多项式模型计算最佳预测(f 函数)减去 100 个不同数据集中给定点的预测的差值。我将这些结果存储在预测向量中,最后存储函数 returns 差均值的平方,即平方偏差。
奇怪的是,当我执行纯代码时,而不是在函数中,它可以工作,它不会产生任何错误。但是当我 运行:
plot.bias(f, 1)
出现错误。怎么了?许多 tnx
我想我找到了。这似乎可行,但不确定是否符合您的期望。在 plot.bias
中,我更改了您对 calc.bias
的使用(即 calc.bias(f, polyfit, x)
而不是 calc.bias(f, polydeg, x)
)。我使用的全部代码:
library(PolynomF)
f <- function(x) sin(x-5)/(x-5)
# From which we can sample datasets:
N <- 20
x <- runif(N,0,15)
t <- f(x) + rnorm(N, sd=0.1)
calc.bias <- function (f, polyfit, point) {
predictions <- numeric(0)
print(class(point))
for (i in 1:100)
{
x <- runif(N, 0, 15)
t <- f(x) + rnorm(N, sd=0.2)
d <- data.frame(point)
add <- predict(polyfit, newdata = data.frame(point))
predictions <- c(predictions, add)
}
return((f(point)-mean(predictions))^2)
}
plot.bias <- function (f, polydeg) {
plot(data.frame(x, t))
curve(f, type="l", col="green", add=TRUE)
polyfit <- lm(t ~ poly(x, polydeg, raw=TRUE))
p <- polynom(coef(polyfit))
curve(p, col="red", add=TRUE)
points(x, calc.bias(f, polyfit, x), col="blue")
abline(h=0, col='blue')
}
plot.bias(f, 1)
我不是 R 专家。我正在尝试计算多项式模型生成的偏差:
f <- function(x) sin(x-5)/(x-5)
# From which we can sample datasets:
N <- 20
x <- runif(N,0,15)
t <- f(x) + rnorm(N, sd=0.1)
t 是生成数据的函数,我使用标准差为 0.2 的高斯误差的同步函数。 为了创建点 x,我使用 0 到 15 的均匀分布形式。
plot.bias <- function (f, polydeg) {
plot(data.frame(x, t))
curve(f, type="l", col="green", add=TRUE)
polyfit <- lm(t ~ poly(x, polydeg, raw=TRUE))
p <- polynom(coef(polyfit))
curve(p, col="red", add=TRUE)
points(x, calc.bias(f, polydeg, x), col="blue")
abline(h=0, col='blue')
}
这是一个函数,它首先绘制数据,然后绘制原始生成曲线,然后计算给定次数的回归多项式,绘制它,最后绘制偏差。偏差由以下给出误差的函数计算:
calc.bias <- function (f, polyfit, point) {
predictions <- numeric(0)
print(class(point))
for (i in 1:100)
{
x <- runif(N, 0, 15)
t <- f(x) + rnorm(N, sd=0.2)
d <- data.frame(point)
add <- predict(polyfit, newdata = data.frame(point))
predictions <- c(predictions, add)
}
return((f(point)-mean(predictions))^2)
}
我所做的是使用我们的多项式模型计算最佳预测(f 函数)减去 100 个不同数据集中给定点的预测的差值。我将这些结果存储在预测向量中,最后存储函数 returns 差均值的平方,即平方偏差。
奇怪的是,当我执行纯代码时,而不是在函数中,它可以工作,它不会产生任何错误。但是当我 运行:
plot.bias(f, 1)
出现错误。怎么了?许多 tnx
我想我找到了。这似乎可行,但不确定是否符合您的期望。在 plot.bias
中,我更改了您对 calc.bias
的使用(即 calc.bias(f, polyfit, x)
而不是 calc.bias(f, polydeg, x)
)。我使用的全部代码:
library(PolynomF)
f <- function(x) sin(x-5)/(x-5)
# From which we can sample datasets:
N <- 20
x <- runif(N,0,15)
t <- f(x) + rnorm(N, sd=0.1)
calc.bias <- function (f, polyfit, point) {
predictions <- numeric(0)
print(class(point))
for (i in 1:100)
{
x <- runif(N, 0, 15)
t <- f(x) + rnorm(N, sd=0.2)
d <- data.frame(point)
add <- predict(polyfit, newdata = data.frame(point))
predictions <- c(predictions, add)
}
return((f(point)-mean(predictions))^2)
}
plot.bias <- function (f, polydeg) {
plot(data.frame(x, t))
curve(f, type="l", col="green", add=TRUE)
polyfit <- lm(t ~ poly(x, polydeg, raw=TRUE))
p <- polynom(coef(polyfit))
curve(p, col="red", add=TRUE)
points(x, calc.bias(f, polyfit, x), col="blue")
abline(h=0, col='blue')
}
plot.bias(f, 1)