Ich möchte ein Konturdiagramm einer Kernel Density Estimation zeichnen, wo die KDE in jedem der gefüllten Konturbereiche integriert ist.Python - Integrieren 2D Kernel Density Estimation innerhalb von Konturlinien
Als Beispiel stelle ich mir die KDE von 2D-Daten berechnen:
data = np.random.multivariate_normal((0, 0), [[1, 1], [2, 0.7]], 100)
x = data[:, 0]
y = data[:, 1]
xmin, xmax = min(x), max(x)
ymin, ymax = min(y), max(y)
xx, yy = np.mgrid[xmin:xmax:100j, ymin:ymax:100j]
positions = np.vstack([xx.ravel(), yy.ravel()])
values = np.vstack([x, y])
kernel = st.gaussian_kde(values)
f = np.reshape(kernel(positions).T, xx.shape)
Ich weiß, wie die ContourPlot des KDE zu ziehen.
fig = plt.figure()
ax = fig.gca()
ax.set_xlim(xmin, xmax)
ax.set_ylim(ymin, ymax)
cfset = ax.contourf(xx, yy, f, cmap='Blues')
cset = ax.contour(xx, yy, f, colors='k')
plt.show()
Dieses Konturplot zeigt jedoch, wie hoch die Wahrscheinlichkeitsdichte in jedem der gefüllten Bereiche ist. Stattdessen möchte ich, dass die Handlung die Gesamtwahrscheinlichkeit anzeigt, die in jeden der gefüllten Bereiche fällt.
Vielen Dank. Obwohl die Antwort nicht vollständig funktioniert, bringt sie mich näher an die Lösung heran (zumindest in diesem speziellen Fall, in dem die Konturen monoton sind). Könnten Sie bitte klarstellen, was Sie tun, wenn Sie F [order] = 1 - F zuweisen? Danke – Laura
Ich habe das Problem gefunden. Diese Lösung funktioniert, wenn man ax.contourf (xx, yy, (1-F), levels = new_levels) plottet. – Laura
Großartig! Sie könnten also auch F [order] = 1 - F durch F [order] = F ersetzen und die andere Zeile unberührt lassen. Brauchen Sie noch einen Rat, was die F [order] = F-Linie eigentlich macht? –