簡體   English   中英

如何獲得雙高斯擬合中每個高斯的百分比?

[英]How to get the percentage of each Gaussian in a double Gaussian fit?

我使用 scipy.optimize.curve_fit 對我的數據進行雙高斯擬合。

import scipy
from scipy.optimize import curve_fit

def gaussian(x, mu, sigma, A):
    return A*np.exp(-(x-mu)**2/2/sigma**2)

def bimodal(x, mu1, sigma1, A1, mu2, sigma2, A2):
    return gaussian(x, mu1, sigma1, A1)+gaussian(x, mu2, sigma2, A2)

def fit_gaussian(n_bins, data):
    bin_heights, bin_borders = np.histogram(np.array(data), bins=n_bins, density=True)
    bin_centers = bin_borders[:-1] + np.diff(bin_borders) / 2
    popt, pcov = scipy.optimize.curve_fit(bimodal, xdata=bin_centers, ydata=bin_heights)
    return bin_borders, popt

bins_fit, popt = fit_gaussian(n_bins=100, data=my_data])

Gaussian 1 和 Gaussian 2 在總人口中所占的百分比是多少? 它只是 A1/(A1+A2)*100 和 A2/(A1+A2)*100 還是我需要更正某些內容?

您需要包含有關每個高斯的sigma信息的信息。 當您說來自每個總體的百分比時,我認為您是在詢問每個高斯分布的總計數(積分)。 對於您表格中的高斯,積分為:

integral = A * np.sqrt(2*np.pi*sigma**2)

然后人口的百分比將是

integral1 / (integral1 + integral2) * 100

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM