对 R 中的非线性函数进行线性回归
Do a linear regression on a non-linear function in R
我不是很清楚如何在 R 中分析非线性回归。
我发现我仍然可以通过使用我的函数的日志来使用 lm 进行线性回归。
我的第一个函数是这个,其中 β1 是截距,β2 是斜率,ε 是误差项:
我认为以下命令可以满足我的需求:
result <- lm(log(Y) ~ log(X1), data=dataset)
问题出在以下函数上:
我不知道我应该在 lm 中放入什么以便对我的函数执行线性回归...有什么想法吗?
以下数学显示了如何将方程式转换为线性回归:
Y = b0*exp(b1*X1 + epsilon)
log(Y) = log(b0) + b1*X1 + epsilon
log(Y) = c0 + b1*X1 + epsilon
所以在 R 中这只是
lm(log(Y) ~ X, data = your_data)
不过,您不会得到 b0
的直接估计值,只能得到 log(b0)
的估计值。但是您可以通过取幂来反向转换截距及其置信区间。
b0_est <- exp(coef(fitted_model)["(Intercept)"])
b0_ci <- exp(confint(fitted_model)["(Intercept)", ])
我不是很清楚如何在 R 中分析非线性回归。
我发现我仍然可以通过使用我的函数的日志来使用 lm 进行线性回归。
我的第一个函数是这个,其中 β1 是截距,β2 是斜率,ε 是误差项:
我认为以下命令可以满足我的需求:
result <- lm(log(Y) ~ log(X1), data=dataset)
问题出在以下函数上:
我不知道我应该在 lm 中放入什么以便对我的函数执行线性回归...有什么想法吗?
以下数学显示了如何将方程式转换为线性回归:
Y = b0*exp(b1*X1 + epsilon)
log(Y) = log(b0) + b1*X1 + epsilon
log(Y) = c0 + b1*X1 + epsilon
所以在 R 中这只是
lm(log(Y) ~ X, data = your_data)
不过,您不会得到 b0
的直接估计值,只能得到 log(b0)
的估计值。但是您可以通过取幂来反向转换截距及其置信区间。
b0_est <- exp(coef(fitted_model)["(Intercept)"])
b0_ci <- exp(confint(fitted_model)["(Intercept)", ])