如何在 R 中使用多个变量执行指数回归

机器算法验证 r 回归 多重回归 非线性回归
2022-03-25 19:49:21

我想用多个自变量执行指数回归(类似于 Excel 中的 LOGEST 函数)

我正在尝试对函数建模, 其中是常数,是我的自变量,是自变量的系数.Y=bm1x1m2x2bx1x2m1m2

我想我可以通过做类似的事情来线性化函数,glm(log(Y) ~ x1 + x2)但我不完全理解为什么会这样。另外,如果有这样的事情,我想运行一个真正的非线性回归。

我的目标是运行线性回归和指数回归,并根据较高的值找到最佳拟合线。R2

我也非常感谢您帮助我理解如何在我的数据的散点图中绘制预测曲线。

2个回答

作为开始:

f <- function(x1,x2,a,b1,b2) {a * (b1^x1) * (b2^x2) }

# generate some data
x1 <- 1:10
x2 <- c(2,3,5,4,6,7,8,10,9,11)
set.seed(44)
y <- 2*exp(x1/4) + rnorm(10)*2
dat <- data.frame(x1,x2, y)

# fit a nonlinear model
fm <- nls(y ~ f(x1,x2,a,b1,b2), data = dat, start = c(a=1, b1=1,b2=1))

# get estimates of a, b
co <- coef(fm)

Huub Hoofs 的上述方法奏效了!谢谢你。这是我用来绘制模型可视化的技术:

# x1 is the variable we want to show on the x-axis
plot(x1, y)

# generate a range of values for x1 in small increments to create a smooth line
xRange <- seq(min(x1), max(x1), length.out = 1000)

# generate the predicted y values (for a test value of x2 = 1)
yValues <- predict(fm, newdata=list(x1=xRange, x2=1))

#draw the curve
lines(xRange, yValues, col="blue")

# generate the predicted y values (for a test value of x2 = 0)
yValues <- predict(fm, newdata=list(x1=xRange, x2=0))

#draw the curve
lines(xRange, yValues, col="red")