フィットしたガウス曲線下の粒子の数を数える必要があります。フィッティングされた曲線の面積は、限界(平均-3 *シグマ)〜(平均±3 *シグマ)内の関数を積分することによって見つけることができる。これを解決するために私を助けてくださいますか?あなたの親切な配慮に感謝します。面積下の粒子数を数えるためのガウス関数の積分
import pylab as py
import numpy as np
from scipy import optimize
from scipy.stats import stats
import matplotlib.pyplot as plt
import pandas as pd
BackPFT='T067.csv'
df_180 = pd.read_csv(BackPFT, error_bad_lines=False, header=1)
x_180=df_180.iloc[:,3]
y_180=df_180.iloc[:,4]
#want to plot the distribution of s calculated by the following equation
s=np.sqrt((((16*x_180**2*38.22**2)/((4*38.22**2-y_180**2)**2))+1))-1
#Shape of this distribution is Gaussian
#I need to fit this distribution by following parameter
mean=0.433
sigma=0.014
draw=s
#Definition of bin number
bi=np.linspace(0.01,8, 1000)
data = py.hist(draw.dropna(), bins = bi)
#Definition of Gaussian function
def f(x, a, b, c):
return (a * py.exp(-(x - mean)**2.0/(2 *sigma**2)))
x = [0.5 * (data[1][i] + data[1][i+1]) for i in xrange(len(data[1])-1)]
y = data[0]
#Fitting the peak of the distribution
popt, pcov = optimize.curve_fit(f, x, y)
chi2, p = stats.chisquare(popt)
x_fit = py.linspace(x[0], x[-1], 80000)
y_fit = f(x_fit, *popt)
plot(x_fit, y_fit, lw=3, color="r",ls="--")
plt.xlim(0,2)
plt.tick_params(axis='both', which='major', labelsize=20)
plt.show()
問題は、定義された関数(f)をどのように統合し、その領域の下の数を数えるかです。ここでファイルT067.csvを添付します。あなたの親切な配慮に事前に感謝します。
このコードにはいくつかの問題があります。重要な行ごとにコメントを追加して、何が起こっているのか、少なくとも達成しようとしていることを伝えてください。 – Gabriel
@Gabrielよろしくお願いします。ここで私はあなたが望むように編集する。さらに詳しい情報が必要な場合は、私に知らせてください。 –
コードを削除して、不可欠ではないものを可能な限り削除する必要があります。また、問題点を詳しく説明してください。 – Gabriel