前提・実現したいこと
初心者なのですがpythonで積分関数を用いた回帰分析を行いたく、web上に掲載されているコードを参考にいくつか検証してみたのですが、まったく歯が立ちませんでした。お詳しい方のアドバイスをいただきたいです。以下の式(2)の左辺のφ(Θ)と右辺のsinΘの実測データがあります。このデータを式(2)により回帰分析をしたいです。λは固定値です。回帰パラメータは式(1)のφ∞、φO、εになります。一日中にらめっこして力尽きました。。。
例などを参考に作成したコードを追記しました。エラーもでるのですが、アプローチがそもそも正しいのかも分かっていません。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df=pd.read_csv('C:/data.csv', encoding='shift=jis')
plt.scatter(df['fs'],df['sin'])
x=np.array(df['sin'])
y=np.array(df['fs'])
import sympy
sympy.init_printing()
sympy.var('a b c x z')
fz = (a+(a-b)*sympy.exp(-z/c))*sympy.exp(-z/0.3/x)
integ = sympy.integrate(fz, (z,0,np.inf))
display(integ)
import scipy.optimize
def func(parameter, xs,ys):
a=parameter[0]
b=parameter[1]
c=parameter[2]
fxs=integ
residual=ys-fxs
return residual
parameter0=[1,1,1]
result = optimize.leastsq(func, parameter0, args=(x,y))
print(result)
plt.scatter(x, y, 'o')
plt.plot(x, fit, '-')
plt.show()
ソースコード
試したこと
例えば
buhin-blog.blogspot.comに掲載のあるコードも試してみたのですが、ダメでした。積分が含まれていることと、変数が2変数(x,z)という点で、転用では難しいと感じています。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
コードを追記しました。
あなたの回答
tips
プレビュー