我有一个遵循1 / x曲线模式的数据集。我想用模型拟合数据曲线。
我尝试过使用多项式函数,但它看起来并不正确,因为多项式曲线会反弹,而我的数据会在底部渐近。我知道我在这里缺少一些术语,但我怎么能做曲线呢?是否有1 / x曲线的名称?
x<-rep(1:20)
y<-1/x
fit <- lm(y ~ poly(x, 2))
plot(x, y)
points(x, predict(fit), type="l", col="red", lwd=2)
答案 0 :(得分:3)
它不起作用,因为你强迫它是poly(x, 2)
的2度多项式。
您需要创建一些其他变量,即x
值的转换,然后对其进行回归:
x <- rep(1:20)
transformedx <- 1/x
y <- 1/x
fit <- lm(y ~ transformedx)
plot(x, y)
points(x, predict(fit), type="l", col="red", lwd=2)
对于紧凑性,您只需使用lm
函数在I
行中编写公式,Mike.Gahan指出:
fit <- lm(y ~ I(1/x))
当然,这将是一个完美的契合,因为您将一个函数映射到自身,但我假设实际上您的y
值来自与{{不完全匹配的数据源1}}。