Zusammenfassung der statistischen Datenanalysemethoden mit Python, die im Geschäftsleben verwendet werden können

Überblick

Ich denke, es ist sehr wichtig, den Effekt nach Durchführung verschiedener Versuche mit WEB-Diensten zu überprüfen. Ich denke, dass grundlegende Statistiken vollständig als Methode verwendet werden können. Dieses Mal haben wir die Methode der statistischen Datenanalyse mit Python + Jupyter Lab (Docker) zusammengefasst, um die Auswirkungen der Testproduktion, die in Unternehmen verwendet werden kann, anhand der Basisstatistik und der Datenanalyse zu überprüfen.

Beachten Sie auch das diesmal verwendete Notizbuch. https://github.com/hikarut/Data-Science/tree/master/notebooks/statisticsSample

Umgebung

Es wird davon ausgegangen, dass Jupyter Lab mit Docker verwendet werden kann, indem auf Folgendes Bezug genommen wird. Verwenden Sie die mit Docker gestartete vim-Schlüsselbindung in JupyterLab

Zusammenfassung der Analysemethode

- Qualitative erklärende Variablen
(2 Klassifikationen)
Quantitative erklärende Variablen
(Mehrere Fälle einschließlich Quantität und Qualität)
Quantitatives Ergebnis(Numerisch) T-Test für die Differenz zwischen Durchschnittswerten
(oder Wilcoxons Rang-Summen-Test)
Multiple Regressionsanalyse
Qualitatives Ergebnis(Klassifizierungsart) Z-Test für den Unterschied im Verhältnis
(Gleich wie Chi-Quadrat-Test)
Logistische Regressionsanalyse

der Begriff

Quantitativ

qualitativ

Ergebnis

Erklärende Variable

Durchschnittswert

import numpy as np

np.mean()

Median

import numpy as np

np.median()

Abweichung

Varianz

import numpy as np

np.var()

Standardabweichung

import numpy as np

np.std()

Nullhypothese

Konflikthypothese

p-Wert

Details zur Analysemethode

t testen

1 Probe t Test (1 Gruppe t Test)

#1 Probe t Test

import numpy as np
import scipy as sp
import matplotlib.pyplot as plt

coffee = np.array([
    210.9, 195.4, 202.1 , 211.3, 195.5, 
    212.9, 210.9, 198.3, 202.1, 215.6, 
    204.7, 212.2, 200.7, 206.1, 195.8
])

t, p = sp.stats.ttest_1samp(coffee, popmean=200)
print('Mutterdurchschnitt:', np.mean(coffee))
print('T-Wert mit einem Bevölkerungsdurchschnitt von 200:', t)
print('Wahrscheinlichkeit, dass der Bevölkerungsdurchschnitt 200 beträgt(p-Wert):', p)

Ausführungsergebnis


Bevölkerungsdurchschnitt: 204.96666666666664
T-Wert mit einem Bevölkerungsdurchschnitt von 200: 2.751076959309973
Wahrscheinlichkeit, dass der Bevölkerungsdurchschnitt 200 beträgt(p-Wert): 0.015611934395473872

Gepaarter t-Test

#Gepaarter T-Test

import numpy as np
from scipy import stats

A = np.array([0.7, -1.6, -0.2, -1.2, -0.1, 3.4, 3.7, 0.8, 0.0, 2.0])
B = np.array([1.9, 0.8, 1.1, 0.1, -0.1, 4.4, 5.5, 1.6, 4.6, 3.4])

print('Ein Durchschnitt:', np.mean(A))
print('B Durchschnitt:', np.mean(B))
stats.ttest_rel(A, B)

Ausführungsergebnis


Ein Durchschnitt: 0.75
B Durchschnitt: 2.3299999999999996
Ttest_relResult(statistic=-4.062127683382037, pvalue=0.00283289019738427)

Studententest

#Studententest

import numpy as np
from scipy import stats

A = np.array([6.3, 8.1, 9.4, 10.4, 8.6, 10.5, 10.2, 10.5, 10.0, 8.8])
B = np.array([4.8, 2.1, 5.1, 2.0, 4.0, 1.0, 3.4, 2.7, 5.1, 1.4, 1.6])

print('Ein Durchschnitt:', np.mean(A))
print('B Durchschnitt:', np.mean(B))
stats.ttest_ind(A, B)

Ausführungsergebnis


Durchschnitt: 9.28
B Durchschnitt: 3.0181818181818185
Ttest_indResult(statistic=9.851086859836649, pvalue=6.698194360479442e-09)

Welch's t Test

#Welch's t Test

import numpy as np
from scipy import stats

A = np.array([13.8, 10.2, 4.6, 10.0, 4.2, 16.1, 14.4, 4.9, 7.7, 11.4])
B = np.array([3.3, 2.6, 4.0, 4.7, 1.9, 2.9, 4.7, 5.3, 4.3, 3.0, 2.0])

print('Ein Durchschnitt:', np.mean(A))
print('B Durchschnitt:', np.mean(B))
stats.ttest_ind(A, B, equal_var=False)

Ausführungsergebnis


Durchschnitt: 9.73
B Durchschnitt: 3.5181818181818176
Ttest_indResult(statistic=4.426442804187721, pvalue=0.0012285738375064346)

Wilcoxons Rang-Summen-Test

import numpy as np
from scipy import stats

A = np.array([1.83, 1.50, 1.62, 2.48, 1.68, 1.88, 1.55, 3.06, 1.30, 2.01, 3.11])
B = np.array([0.88, 0.65, 0.60, 1.05, 1.06, 1.29, 1.06, 2.14, 1.29])

print('Ein Durchschnitt:', np.mean(A))
print('B Durchschnitt:', np.mean(B))
stats.mannwhitneyu(A, B, alternative='two-sided')

Ausführungsergebnis


Ein Durchschnitt: 2.0018181818181815
B Durchschnitt: 1.1133333333333333
MannwhitneyuResult(statistic=91.0, pvalue=0.0018253610099931035)

Wilcoxons Code Order Summen-Test

import numpy as np
from scipy import stats

A = np.array([1.83, 1.50, 1.62, 2.48, 1.68, 1.88, 1.55, 3.06, 1.30])
B = np.array([0.88, 0.65, 0.60, 1.05, 1.06, 1.29, 1.06, 2.14, 1.29])

print('Ein Durchschnitt:', np.mean(A))
print('B Durchschnitt:', np.mean(B))
stats.wilcoxon(A, B)

Ausführungsergebnis


Ein Durchschnitt: 1.8777777777777775
B Durchschnitt: 1.1133333333333333
WilcoxonResult(statistic=0.0, pvalue=0.007685794055213263)

Chi-Quadrat-Test

#Chi-Quadrat-Test

import numpy as np
import pandas as pd
from scipy import stats

#Beispieldaten
sex = np.random.choice(['male', 'female'], size=20)
vote = np.random.choice(['agree', 'against'], size=20)
cross = pd.crosstab(index=sex, columns=vote)
print(cross)

x2, p, dof, expected = stats.chi2_contingency(cross, correction=False)
print("Chi-Quadrat-Wert:", x2)
print("p-Wert:", p)
print("Der Freiheitsgrad", dof)
print(expected)

Ausführungsergebnis


vote    against  agree
sex                   
female        5      5
male          6      4
Chi-Quadrat-Wert: 0.20202020202020202
p-Wert: 0.653095114932182
1 Freiheitsgrad
[[5.5 4.5]
 [5.5 4.5]]

Multiple Regressionsanalyse

#Registrierung von Testdaten
import pandas as pd
import numpy as np

data = pd.DataFrame({'output': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
                     'input01': [1, 3, 5, 6, 10, 14, 8, 17, 15, 20],
                     'input02': [5, 10, 20, 30, 35, 35, 50, 70, 85, 100]},)
data.head()
#Einfache Regressionsanalyse mit input01 und output
from sklearn import linear_model
model = linear_model.LinearRegression()

#Verwenden Sie input01 als erklärende Variable
X = data.loc[:, ['input01']].values
#Verwenden Sie die Ausgabe als Zielvariable
Y = data['output'].values

#Erstellen Sie ein Vorhersagemodell
model.fit(X, Y)
print('Modellparameter:', model.get_params())
print('Regressionskoeffizienten:', model.coef_)
print('Sektion(Error):', model.intercept_)
print('Entscheidungskoeffizient(X,Korrelation von Y.):', model.score(X, Y))
print('Regressionsformel:[alcohol] = %s × [density] + %s' % (model.coef_[0], model.intercept_))

Ausführungsergebnis


Modellparameter: {'copy_X': True, 'fit_intercept': True, 'n_jobs': None, 'normalize': False}
Regressionskoeffizienten: [4.45327487]
Sektion(Error): 10.912578788709233
Entscheidungskoeffizient(X,Korrelation von Y.): 0.8771602016326598
Regressionsformel:[alcohol] = 4.45327486982735 × [density] + 10.912578788709233
#Regressionsanalyse unter Verwendung von Statistikmodellen
import statsmodels.api as sm

model = sm.OLS(Y, sm.add_constant(X))
result = model.fit(disp=0)
print(result.summary())

Ausführungsergebnis


                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       0.877
Model:                            OLS   Adj. R-squared:                  0.862
Method:                 Least Squares   F-statistic:                     57.13
Date:                Fri, 20 Mar 2020   Prob (F-statistic):           6.56e-05
Time:                        23:33:37   Log-Likelihood:                -37.282
No. Observations:                  10   AIC:                             78.56
Df Residuals:                       8   BIC:                             79.17
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         10.9126      6.833      1.597      0.149      -4.845      26.670
x1             4.4533      0.589      7.558      0.000       3.095       5.812
==============================================================================
Omnibus:                        5.725   Durbin-Watson:                   2.878
Prob(Omnibus):                  0.057   Jarque-Bera (JB):                2.315
Skew:                           1.150   Prob(JB):                        0.314
Kurtosis:                       3.513   Cond. No.                         22.4
==============================================================================
#Grafik
import matplotlib.pyplot as plt
 
#Streudiagramm
plt.scatter(X, Y)
 
#Gerade zurückgeben
plt.plot(X, model.predict(X), color='black')
#Normalisierte und multiple Regressionsanalyse
from sklearn import linear_model
model = linear_model.LinearRegression()

#Normalisieren Sie jede Spalte im Datenrahmen
data2 = data.apply(lambda x: (x - np.mean(x)) / (np.max(x) - np.min(x)))
data2.head()
#Verwenden Sie eine andere als die Ausgabe als erklärende Variable
data2_except_output = data2.drop("output", axis=1)
X = data2_except_output
#Verwenden Sie die Ausgabe als Zielvariable
Y = data2['output'].values
 
#Erstellen Sie ein Vorhersagemodell
model.fit(X, Y)
 
#Partieller Regressionskoeffizient
print(pd.DataFrame({"name":data2_except_output.columns,
                    "result":np.abs(model.coef_)}).sort_values(by='result') )
 
print('Sektion(Error):', model.intercept_)

Ausführungsergebnis


      name    result
0  input01  0.295143
1  input02  0.707205
Sektion(Error): 1.6679414843100476e-17
#Multiple Regressionsanalyse unter Verwendung von Statistikmodellen
import statsmodels.api as sm

#Erstellen Sie ein Vorhersagemodell
model = sm.OLS(Y, sm.add_constant(X))
result = model.fit(disp=0)
print(result.summary())

Ausführungsergebnis


                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       0.962
Model:                            OLS   Adj. R-squared:                  0.951
Method:                 Least Squares   F-statistic:                     87.64
Date:                Fri, 20 Mar 2020   Prob (F-statistic):           1.11e-05
Time:                        23:36:48   Log-Likelihood:                 13.530
No. Observations:                  10   AIC:                            -21.06
Df Residuals:                       7   BIC:                            -20.15
Df Model:                           2                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const      -1.388e-17      0.024  -5.87e-16      1.000      -0.056       0.056
input01        0.2951      0.180      1.636      0.146      -0.132       0.722
input02        0.7072      0.180      3.923      0.006       0.281       1.133
==============================================================================
Omnibus:                        6.793   Durbin-Watson:                   1.330
Prob(Omnibus):                  0.033   Jarque-Bera (JB):                2.620
Skew:                           1.171   Prob(JB):                        0.270
Kurtosis:                       3.896   Cond. No.                         10.5
==============================================================================

Logistische Regressionsanalyse

#Registrierung von Testdaten
import pandas as pd
import numpy as np

data = pd.DataFrame({'Sex': [1, 1, 0, 1, 0, 0, 1, 1, 0, 0],
                     'Schüler': [0, 0, 0, 0, 1, 0, 0, 1, 0, 1],
                     'Zeit bleiben()': [34, 28, 98, 70, 67, 23, 67, 56, 41, 90],
                     '': [0, 0, 1, 0, 1, 0, 1, 1, 0, 1]},)
data
#
from sklearn.linear_model import LogisticRegression
import statsmodels.api as sm

#
X = data[['', '', 'Logistische Regressionsanalyse unter Verwendung von Statistikmodellen für die Benutzerregistrierung Verwenden Sie andere als die Benutzerregistrierung für erklärende Variablen(Sekunden)']]
#Verwenden Sie die Benutzerregistrierung für die Zielvariable
Y = data['Benutzer Registration'].values

model = sm.Logit(Y, sm.add_constant(X))
result = model.fit(disp=0)
print('---Zusammenfassung---')
print(result.summary())

print('---Quoten protokollieren---')
print(result.params)

print('---p-Wert---')
print(result.pvalues)

print('---Wie groß ist die Wahrscheinlichkeit, dass ein Ereignis auftritt, wenn die Variable um 1 Einheit erhöht wird?%Wird auf erhöhen(Quantitative Evaluation)---')
print('Zeit bleiben(Sekunden):', 1 / (1 + np.exp(-result.params['Zeit bleiben(Sekunden)'])))
print('Zeit bleiben(Sekunden):', np.exp(result.params['Zeit bleiben(Sekunden)']) / (1 + np.exp(result.params['Zeit bleiben(Sekunden)'])))

print('---Wie oft die Wahrscheinlichkeit, dass ein Ereignis auftritt, wenn die Variable 1 wird, ist die Wahrscheinlichkeit, dass ein Ereignis nicht auftritt(Qualifikation)---')
print('Sex:', np.exp(result.params['Sex']))
print('Schüler:', np.exp(result.params['Schüler']))

Ausführungsergebnis


---Zusammenfassung---
                           Logit Regression Results                           
==============================================================================
Dep. Variable:                      y   No. Observations:                   10
Model:                          Logit   Df Residuals:                        6
Method:                           MLE   Df Model:                            3
Date:                Fri, 20 Mar 2020   Pseudo R-squ.:                  0.7610
Time:                        10:12:42   Log-Likelihood:                -1.6565
converged:                      False   LL-Null:                       -6.9315
Covariance Type:            nonrobust   LLR p-value:                   0.01443
==============================================================================
                 coef    std err          z      P>|z|      [0.025      0.975]
------------------------------------------------------------------------------
const         -9.5614     10.745     -0.890      0.374     -30.622      11.499
Geschlecht 0.1543      5.170      0.030      0.976      -9.979      10.287
Student 22.7574   3.26e+04      0.001      0.999   -6.38e+04    6.38e+04
Zeit bleiben(Sekunden)        0.1370      0.139      0.988      0.323      -0.135       0.409
==============================================================================

Possibly complete quasi-separation: A fraction 0.30 of observations can be
perfectly predicted. This might indicate that there is complete
quasi-separation. In this case some parameters will not be identified.
---Quoten protokollieren---
const      -9.561361
Geschlecht 0.154283
Student 22.757416
Zeit bleiben(Sekunden)     0.136965
dtype: float64
---p-Wert---
const      0.373568
Geschlecht 0.976193
Schüler 0.999442
Zeit bleiben(Sekunden)    0.323037
dtype: float64
---Wie groß ist die Wahrscheinlichkeit, dass ein Ereignis auftritt, wenn die Variable um 1 Einheit erhöht wird?%Wird auf erhöhen(Quantitative Evaluation)---
Zeit bleiben(Sekunden): 0.5341877701226888
Zeit bleiben(Sekunden): 0.5341877701226888
---Wie oft die Wahrscheinlichkeit, dass ein Ereignis auftritt, wenn die Variable 1 wird, ist die Wahrscheinlichkeit, dass ein Ereignis nicht auftritt(Qualifikation)---
Sex: 1.1668207000698392
Schüler: 7645749443.830123

Verweise

Recommended Posts

Zusammenfassung der statistischen Datenanalysemethoden mit Python, die im Geschäftsleben verwendet werden können
Zusammenfassung der Scikit-Learn-Datenquellen, die beim Schreiben von Analyseartikeln verwendet werden können
Skripte, die bei der Verwendung von Bottle in Python verwendet werden können
[Python] Einführung in das WEB-Scraping | Zusammenfassung der Methoden, die mit dem Webdriver verwendet werden können
Zusammenfassung der Standardeingabe von Python, die in Competition Pro verwendet werden kann
Einfaches Auffüllen von Daten, die in der Verarbeitung natürlicher Sprache verwendet werden können
Zusammenfassung der beim Extrahieren von Daten verwendeten Pandas-Methoden [Python]
Liste des Python-Codes, der bei der Big-Data-Analyse verwendet wird
Liste der Tools, mit denen Sie auf einfache Weise die Emotionsanalyse japanischer Sätze mit Python ausprobieren können (versuchen Sie es mit Google Colab).
Zusammenfassung der häufig verwendeten Methoden bei Pandas
Zusammenfassung der integrierten Methoden usw. der Python-Liste
Python-E-Book-Zusammenfassung nützlich für die frei lesbare Datenanalyse
Zusammenfassung der Wahrscheinlichkeitsverteilungen, die häufig in Statistiken und Datenanalysen vorkommen
Funktionen, die in der for-Anweisung verwendet werden können
Aufgezeichnete Umgebung für die Datenanalyse mit Python
Zusammenfassung der Excel-Operationen mit OpenPyXL in Python
Python-Übungsdatenanalyse Zusammenfassung des Lernens, dass ich ungefähr 10 mit 100 Schlägen getroffen habe
Datenanalyse in Python Zusammenfassung der Quellen, die Anfänger zuerst betrachten sollten
Persönliche Notizen zu Pandas-bezogenen Vorgängen, die in der Praxis verwendet werden können
Zusammenfassung der Tools, die zum Analysieren von Daten in Python benötigt werden
Grundlegende Algorithmen, die bei Wettkampfprofis eingesetzt werden können
[Python] [Word] [python-docx] Einfache Analyse von Diff-Daten mit Python
Um Japanisch mit Python in der Docker-Umgebung verwenden zu können
Hinweise zu Python-Kenntnissen, die mit AtCoder verwendet werden können
ANTs Bildregistrierung, die in 5 Minuten verwendet werden kann
Kann bei Wettkampfprofis eingesetzt werden! Python-Standardbibliothek
Visualisierung von geografischen Informationen von R und Python, die von Power BI ausgedrückt werden können
[Einführung in Python] Zusammenfassung der Funktionen und Methoden, die häufig in Python vorkommen [Problemformat]
Datenanalyse mit Python-Pandas
Formatübersicht der Formate, die mit gensim serialisiert werden können
Grundlegende Zusammenfassung der Datenoperationen in Python Pandas - Zweite Hälfte: Datenaggregation
Python3-Verarbeitung, die in Paiza verwendbar zu sein scheint
Goroutine (parallele Steuerung), die im Feld eingesetzt werden kann
Textanalyse, die in 5 Minuten durchgeführt werden kann [Word Cloud]
Goroutine, die im Feld verwendet werden kann (errgroup.Group Edition)
Bewertungsindex, der für GridSearchCV von sklearn angegeben werden kann
Kann mit AtCoder verwendet werden! Eine Sammlung von Techniken zum Zeichnen von Kurzcode in Python!
[Django] Feldnamen, die für das Benutzermodell, die Benutzerregistrierung und die Anmeldemethoden verwendet werden können
[Python3] Code, der verwendet werden kann, wenn Sie die Größe von Bildern Ordner für Ordner ändern möchten
Eine einfache Datenanalyse von Bitcoin, die von CoinMetrics in Python bereitgestellt wird
Untersuchung der von Python steuerbaren Gleichstromversorgung
Ich habe es gemacht, weil ich JSON-Daten möchte, die in Demos und Prototypen frei verwendet werden können
33 Zeichenfolgen, die in Python nicht als Variablennamen verwendet werden sollten
Hier finden Sie eine Zusammenfassung der Dinge, die beim Umgang mit komplexen Zahlen in Python hilfreich sein können
Ein Timer (Ticker), der im Feld verwendet werden kann (kann überall verwendet werden)
Neue Funktionen in Python 3.9 (1) - Der Summensatzoperator kann im Wörterbuchtyp verwendet werden.
Empfehlung zur Datenanalyse mit MessagePack
Eine Klasse, die häufig verwendete Methoden in Twitter API (Python) zusammenfasst.
Python-Standardmodul, das in der Befehlszeile verwendet werden kann
Ich habe einen Tri-Tree geschrieben, der für die Implementierung von Hochgeschwindigkeitswörterbüchern in D-Sprache und Python verwendet werden kann
Ich habe eine generische Python-Projektvorlage erstellt
Zusammenfassung der AtCoder C-Probleme, die in der Mathematik der High School gelöst werden können
Grundlegende Zusammenfassung des Scrapings mit Anfragen, die Anfänger absolut verstehen können [Python]
Leistungsfähigkeit von Vorhersagemethoden in der Zeitreihendatenanalyse Halboptimierung (SARIMA) [Memo]
Maximale Anzahl von Funktionsparametern, die in jeder Sprache definiert werden können
Code lesen von faker, einer Bibliothek, die Testdaten in Python generiert
Übung, dies in Python zu verwenden (schlecht)
Zusammenfassung der häufig verwendeten Befehle in matplotlib