JZYGNTR 2022-07-18 20:33 采纳率: 75%
浏览 70
已结题

y=a*exp(b*x)这个式子怎么在python中作为条件编写(使用最小二乘法拟合的参数估计程序)

问题遇到的现象和发生背景

y=aexp(bx)这个式子怎么在python中作为条件编写,这是一个使用最小二乘法拟合的参数估计程序。

问题相关代码,请勿粘贴截图
import numpy as np
import matplotlib.pylab as plt
import statsmodels.api as sm
import math

exp=np.loadtxt('5.dat',delimiter=',')

n=len(exp[:,0])
ave_x=np.average(exp[:,0])
ave_y=np.average(exp[:,1])

Sxx=np.sum((exp[:,0]-ave_x)*(exp[:,0]-ave_x))/n
Syy=np.sum((exp[:,1]-ave_y)*(exp[:,1]-ave_y))/n
Sxy=np.sum((exp[:,0]-ave_x)*(exp[:,1]-ave_y))/n

S=np.cov(exp,rowvar=False, bias=True)

print(Sxx,S[0,0])
print(Syy,S[1,1])
print(Sxy,S[0,1])

b=Sxy/Sxx
a=ave_y-b*ave_x

x=np.sort(exp[:,0])
y=a*exp(b*x) #这里出错了

plt.plot(exp[:,0],exp[:,1],linestyle='None',marker='x')
plt.plot(x,y,color='r')
plt.show()

res_exp=Syy*n
res_model=np.sum((y-ave_y)*(y-ave_y))
R2=res_model/res_exp

sigma_y=np.sqrt(np.sum((exp[:,1]-a-b*exp[:,0])*(exp[:,1]-a-b*exp[:,0]))/(n-2))
sigma_b=sigma_y/np.sqrt(n*Sxx)
sigma_a=sigma_y*np.sqrt((ave_x*ave_x+Sxx)/(n*Sxx))

print(sigma_a,sigma_b)

x_add_const=sm.add_constant(exp[:,0])
result=sm.OLS(exp[:,1],x_add_const).fit()

print(result.summary())

print('Parameters: ',result.params)
print('Standard error: ',result.bse)
print('Coefficient of determination ',result.rsquared)

y=result.params[0]+result.params[1]*x
plt.plot(exp[:,0],exp[:,1],linestyle='None',marker='x')
plt.plot(x,y,color='r')
plt.show()

运行结果及报错内容

Traceback (most recent call last):
File "E:/python practice/555/5-1.py", line 26, in
y=aexp(bx)
TypeError: 'numpy.ndarray' object is not callable

我的解答思路和尝试过的方法

是否要化成这样来写程序?
ln(𝑦) = ln(𝑎exp 𝑏𝑥 )
ln 𝑦 = ln 𝑎 + ln exp 𝑏𝑥 = ln 𝑎 + 𝑏𝑥
𝑦́ = 𝑎́ + 𝑏𝑥
𝑎 ± 𝜎6 = exp 𝑎G± 𝜎6́ = exp 𝑎́ ± exp 𝑎́ 𝜎6

我想要达到的结果

我想要在y=aexp(bx)的条件下完成a、b误差的计算。

  • 写回答

2条回答 默认 最新

  • 广大菜鸟 2022-07-18 20:51
    关注

    需要转化,拟合函数需要是线性的时候才可以使用最小二乘法

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月18日
  • 已采纳回答 7月18日
  • 创建了问题 7月18日

悬赏问题

  • ¥15 用sql语句完成下列问题
  • ¥50 yalmip+Gurobi 求解线性规划
  • ¥15 微信开发者工具/云函数/数据库
  • ¥15 如何导出数据库中的表格
  • ¥15 Torch not compiled with CUDA enabled
  • ¥15 三种节点编号优化算法比较
  • ¥15 比特币ord程序wallet_constructor.rs文件支持一次性铸造1000个代币,并将它们分配到40个UTXO上(每个UTXO上分配25个代币),并设置找零地址
  • ¥115 用Java解决探地雷达dzt文件的解析过程
  • ¥20 有关神经网络这道(b)determine the parameters of neural network
  • ¥25 annaconda jvpyter