In diesem Artikel möchte ich die durchschnittliche Punktzahl und Standardabweichung aller Prüflinge anhand der auf der Website der Sapporo Medical University veröffentlichten Daten des Prüflings grob schätzen.
Von der Universität veröffentlichte Daten zeigt die durchschnittlichen, höchsten und niedrigsten Werte erfolgreicher Bewerber. Da nur die Anzahl der Prüflinge erfasst werden kann, nahm ich an, dass die Bewertungen der Prüflinge der Normalverteilung folgen, und verwendete die angegebenen Daten, um die Parameter $ \ mu, \ sigma $ der Normalverteilung vorherzusagen. ..
Zunächst werden die für die Prognose verwendeten Daten in der Tabelle zusammengefasst. Hier liegt der niedrigste Rang bei 75 pro Jahr, da die Kapazität der allgemeinen Aufnahmeprüfung der Sapporo Medical University 75 Personen beträgt. Selbst wenn zusätzliche Passanten auftreten, wird die Punktzahl des 75. Passanten als niedrigste Punktzahl bekannt gegeben. Machen.
Die Analysemethode ist sehr einfach. Lösen Sie einfach die folgenden Gleichungen gleichzeitig.
\left\{
\begin{split}
Prozentsatz erfolgreicher Bewerber&= \int_{Tiefster Punkt}^{\infty} \frac{1}{\sqrt{2 \pi} \sigma} \exp (-\frac{(x - \mu)^2}{2 \sigma^2}) dx \\
Durchschnittliche Punktzahl erfolgreicher Bewerber&= \frac{\int_{Tiefster Punkt}^{\infty} \frac{x}{\sqrt{2 \pi} \sigma} \exp (-\frac{(x - \mu)^2}{2 \sigma^2})}{\int_{Tiefster Punkt}^{\infty} \frac{1}{\sqrt{2 \pi} \sigma} \exp (-\frac{(x - \mu)^2}{2 \sigma^2}) dx}
\end{split}
\right.
Lassen Sie mich eine kleine ergänzende Erklärung geben. Die erste Formel lautet
Prozentsatz erfolgreicher Bewerber= \frac{Unterer Rang}{Anzahl der Prüflinge} = \int_{Tiefster Punkt}^{\infty}Normalverteilung dx
ist was es bedeutet. Wenn Sie die Normalverteilung vom niedrigsten Punkt bis unendlich integrieren, können Sie den Prozentsatz der erfolgreichen Bewerber ermitteln.
Die zweite Formel lautet
Durchschnittliche Punktzahl erfolgreicher Bewerber=Erwarteter Wert der erfolgreichen Bewerberbewertung= \int_{Tiefster Punkt}^{\infty}Standardisierungskonstante\times x \mal Normalverteilung dx= \frac{\int_{Tiefster Punkt}^{\infty}x \mal Normalverteilung dx}{\int_{Tiefster Punkt}^{\infty}Normalverteilung dx}
Es bedeutet $$. Die standardisierte Konstante ist die Konstante $ C $ für $ C \ times \ int_ {niedrigster Punkt} ^ {\ infty} Normalverteilung dx = 1 $, dh $ 1 / \ int_ {niedrigster Punkt} ^ {\ infty} Normalverteilung Die Verteilung dx $.
$$ Nun besteht das Problem hier darin, dass die unbekannte Zahl nur berechnet wird, weil zwei gleichzeitige Gleichungen erhalten werden, aber die Integration der ersten Gleichung für $ \ mu, \ sigma $ unbekannt ist. Es kann nicht so berechnet werden, wie es ist. Also gab ich es auf, nach einer mathematisch genauen Lösung zu suchen, und entschied mich, verschiedene $ \ mu, \ sigma $ -Wertpaare zu ersetzen, um dasjenige zu finden, das am besten angenähert werden kann. Ich kann jedoch keine so mühsame Berechnung durchführen, also ist Pyhon hier.
Importieren Sie zunächst die erforderlichen Bibliotheken und Module.
import numpy as np
import scipy.stats as st
import matplotlib.pyplot as plt
from scipy import integrate
import japanize_matplotlib
Erstellen Sie als Nächstes die für die Vorhersage erforderlichen Daten.
mu_I = [950,1000]
sigma_I = [60,90]
year = [2018,2019,2020]
n = [321,267,281]
pass_n = 75
pass_ratio = [pass_n/i for i in n]
pass_average = [1063,1073,1072]
worst = [1023,1029,1022]
mu_points = np.linspace(mu_I[0],mu_I[1],100)
sigma_points = np.linspace(sigma_I[0],sigma_I[1],60)
pass_ratio_err = 0.005
pass_average_err = 1
Definieren Sie außerdem die Funktionen, die zur Berechnung der erwarteten Punktzahl erfolgreicher Bewerber erforderlich sind.
def norm(x,mu, sigma):
return (x/(np.sqrt(2*np.pi)*sigma))*np.exp(-(x - mu)**2/(2*(sigma**2)))
Zeichnen Sie dann mit dem folgenden Code den Punkt $ (\ mu, \ sigma) $
Es wurde in 3 Arten klassifiziert.
ratio_average = []
ratio_only = []
average_only = []
for i in range(len(year)):
ratio_average.append([[],[]])
ratio_only.append([[],[]])
average_only.append([[],[]])
for mu_point in mu_points:
for sigma_point in sigma_points:
mu = mu_point
sigma = sigma_point
cdf = st.norm.cdf(worst[i], mu, sigma)
int_pdf = integrate.quad(norm,worst[i], np.inf, args = (mu, sigma))[0]
calculate_pass_ratio = 1 - cdf
calculate_pass_average = int_pdf / calculate_pass_ratio
if np.abs(calculate_pass_ratio - pass_ratio[i]) < pass_ratio_err:
if np.abs(calculate_pass_average - pass_average[i]) < pass_average_err:
ratio_average[i][0].append(mu)
ratio_average[i][1].append(sigma)
else:
ratio_only[i][0].append(mu)
ratio_only[i][1].append(sigma)
elif np.abs(calculate_pass_average - pass_average[i]) < pass_average_err:
average_only[i][0].append(mu)
average_only[i][1].append(sigma)
else:
pass
Schließlich wurden die klassifizierten Punkte farbcodiert und in der Grafik dargestellt.
fig , axes = plt.subplots(1,3,figsize = (18,5))
for i, ax in zip([0,1,2],axes):
ax.scatter(ratio_only[i][0],ratio_only[i][1],c = 'y', s = 2, label= 'Der Prozentsatz der erfolgreichen Bewerber{:.3f} $\\pm$ {}%'.format(pass_ratio[i], pass_ratio_err*100))
ax.scatter(average_only[i][0],average_only[i][1],c = 'b', s = 2,label = 'Die durchschnittliche Anzahl erfolgreicher Bewerber{} $\\pm$ {}Punkt'.format(pass_average[i], pass_average_err))
ax.scatter(ratio_average[i][0],ratio_average[i][1],c = 'g', s = 2, label = 'Erfüllen Sie beide oben genannten Bedingungen')
ax.set_xlim(mu_I[0], mu_I[1])
ax.set_ylim(sigma_I[0], sigma_I[1])
ax.set_xlabel('$\\mu$')
ax.set_ylabel('$\\sigma$')
ax.legend(loc = 'best')
ax.set_title('{}Jahr'.format(year[i]))
plt.show()
Das Ausführungsergebnis ist in der folgenden Grafik dargestellt.
Die folgende Tabelle zeigt die ungefähren Werte von $ \ mu und \ sigma $, die aus dem grünen Bereich des Diagramms gelesen wurden.
In diesem Jahr (GJ2020) war die durchschnittliche Punktzahl erfolgreicher Bewerber höher als die des GJ2018, aber die durchschnittliche Punktzahl der Prüflinge war niedriger als die des GJ2018. Darüber hinaus nimmt die Standardabweichung von Jahr zu Jahr zu, und es kann gesagt werden, dass Fragen gestellt werden, um den Punktunterschied zwischen den Prüflingen zu vergrößern.
Recommended Posts