1

この散布図にガウスを当てはめる方法を複数試しましたが、うまくいきませんでした。どんな助けでも大歓迎です。ありがとう!

from numpy import *
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

data = loadtxt("/home/***/****/***")

t,q = data[:,2], data[:,3]                         
t,q = loadtxt("/home/***/****/***", usecols = (2,3), unpack=True)

plt.scatter(t,q, marker='.', s=20)
plt.show()
4

2 に答える 2

1

平均値と共分散パラメータの定義を使用して、データからの最尤推定値を使用してそれらを適合させることができるようですよね?

import numpy as np

data = np.loadtxt("/home/***/****/***", usecols=(2, 3))
mu = data.mean(axis=0)
sigma = np.cov(data, rowvar=0)

私の理解では、これが「フィッティング」の意味です。ただし、これらの量をプロットに表示しようとしているようです。これは少しトリッキーかもしれませんが、推定された共分散行列の固有ベクトルを見つけるために線形代数を使用し、それらを使用して共分散楕円を描画する必要があるためです。

import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse

# compute eigenvalues and associated eigenvectors
vals, vecs = np.linalg.eigh(sigma)

# compute "tilt" of ellipse using first eigenvector
x, y = vecs[:, 0]
theta = np.degrees(np.arctan2(y, x))

ax = plt.subplot(111)

# eigenvalues give length of ellipse along each eigenvector
w, h = 2 * np.sqrt(vals)
ax.add_artist(Ellipse(mu, w, h, theta))

# show data on top of ellipse
ax.scatter(data[:, 0], data[:, 1])

plt.show()
于 2013-07-30T21:16:02.000 に答える