将曲线/模型拟合为1 / x数据

时间:2015-04-26 17:26:39

标签: r statistics

我有一个遵循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)

example graph

1 个答案:

答案 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}}。