如何在Julia中用线性回归插值法估算未知系数k与l
用线性回归估算指数函数系数k和l
问题描述
已知指数函数形式为 y = k·e^(l·x),其中k、l为未知系数,需通过以下数据表估算其值:
- x=-2.0,y=1.719334581463762
- x=-1.0,y=1.900158577875515
- x=0.0,y=2.1
- x=1.0,y=2.3208589279588603
- x=2.0,y=2.5649457921363568
已完成数学推导:对函数两边取自然对数,得到线性形式 ln(y) = ln(k) + l·x,可基于变换后的数据应用线性回归。现有如下LinearRegression函数:
using DataFrames, GLM function LinearRegression(X) x = X[:,1] y = X[:,2] data = DataFrame(y = y, x = x) reg = lm(@formula(y ~ x), data) return coef(reg)[2], coef(reg)[1] end
计算步骤
- 构造对数变换数据集:保持原始x值不变,将每个y值替换为
ln(y)(自然对数)。 - 调用线性回归函数:将变换后的数据集传入
LinearRegression函数,返回的第一个值是线性模型的斜率,即l;第二个值是截距,即ln(k)。 - 计算k值:对截距结果取自然指数
exp(截距),得到k。
完整代码示例
using DataFrames, GLM # 原始数据集 original_data = [ -2.0 1.719334581463762 -1.0 1.900158577875515 0.0 2.1 1.0 2.3208589279588603 2.0 2.5649457921363568 ] # 对数变换:x不变,y取自然对数 transformed_data = hcat(original_data[:,1], log.(original_data[:,2])) # 定义线性回归函数 function LinearRegression(X) x = X[:,1] y = X[:,2] data = DataFrame(y = y, x = x) reg = lm(@formula(y ~ x), data) return coef(reg)[2], coef(reg)[1] end # 计算l和ln(k) l, ln_k = LinearRegression(transformed_data) # 计算k k = exp(ln_k) # 输出结果 println("估算得到的l值:", l) println("估算得到的k值:", k)
结果说明
运行代码后会得到精确计算值:
- l≈0.1(与数据的指数增长趋势匹配)
- k≈2.1(与x=0时y=k的理论值一致,符合原始数据)
内容的提问来源于stack exchange,提问作者Satyaban Sahoo
相关产品推荐
相关产品推荐

