[PYTHON] [Für Anfänger] Für diejenigen, die durch ihre eigenen Daten des Regressionsmodells gestoppt werden (Statistikmodelle (1. Mal))

[Für Anfänger] Für diejenigen, die durch ihre eigenen Daten des Regressionsmodells gestoppt werden (Statistikmodelle (1. Mal))

Fast ein Memorandum

** Einführung in Statistikmodelle (OLS) für diejenigen, die mit Beispieldaten nicht weiterkommen </ font> **

Dies ist ein Einführungsartikel für diejenigen, die eine Regressionsstichprobe mit Statistikmodellen ausprobiert haben und mit ihren eigenen Daten nicht weiterkommen.

Als ich kürzlich versuchte, Prophet auf Facebook als Zeitreihenanalyse zu verwenden, einschließlich der Vorhersage von Daten, war die von mir erstellte Datenmenge gering und die Genauigkeit noch unbekannt, aber es funktionierte vorerst. Als ich die Regression mit Statistikmodellen und sklearn begann, was die Grundlagen zu sein scheinen, als ich die Daten selbst erstellte, erschien ein Fehler usw. und es hörte auf.

Als ich mir die offizielle Website von statsmodels angesehen und auf verschiedene Websites verwiesen habe, bin ich nach und nach vorgegangen, und es scheint, dass es fast wie erwartet funktioniert hat.

Zum Zeitpunkt der Modellanwendung wurde es bei den zu übergebenden Daten angehalten. Ich würde es gerne posten, weil die Bewegung mit meinen eigenen Daten nahe an dem lag, was ich erwartet hatte.

Bei diesem Skript handelt es sich um ein fiktives Restaurant (vermutlich eine Bar oder eine Sky Lounge). Bei Verkäufen werden fiktive Verkaufsdaten angenommen, in denen die Hauptkategorien von Produkten, der Stückpreis pro Kunde, die Anzahl der Besucher usw. aufgezeichnet sind. Gibt es eine Tendenz an Tagen, an denen es viele gibt? Es ist eine Einstellung.

Es wird davon ausgegangen, dass das Geschäft westliche Spirituosen und Cocktails, leichte Mahlzeiten und Zigarren anbietet.


【Umgebung】 Linux: debian10.3 python: 3.7.3 pandas: 1.0.3 statsmodels: 0.11.1 jupyter-lab: 2.1.0

Angenommen, Sie haben eine CSV-Datei wie die folgende

Date,earnings,customer,earnings_customer,fortified_sweet,rum,brown_spirits,mojito_rebjito,cocktail,bar_food,cigar 2020-03-01,30000,5,6000,2,2,2,3,2,5,1

** 1. Analyse fiktiver Verkaufsdaten **

Das Skript lief in Jupiter.

jupyter



##!/usr/bin/env python
# coding: utf-8

#Fiktive Verkaufsdaten
# infile = './sales_item_tf.csv'
import pandas as pd
#import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
import seaborn as sns

#CSV-Datei
infile = './sales_item_tf.csv'

df = pd.read_csv(infile ,usecols={'earnings' ,'customer' 
                                  ,'fortified_sweet' ,'brown_spirits' ,'rum' ,'cocktail' ,'bar_food','cigar'})

df.columns

#Korrelationskoeffizient
df_corr = df.corr()
sns.heatmap(df_corr, vmax=1, vmin=-1, center=0)

#Zuordnungsvariable X zuordnen
X = df.loc[: ,'customer':'cigar']
X = X.astype(float)

#X.info()
df.columns

#Ergebnis in Zielvariable y'Ersatz
df
y = df['earnings']
y = y.astype(float)
#y = y.values

y

#Regressionsmodell aufrufen
model = sm.OLS(y, sm.add_constant(X))

#Modell erstellen
results = model.fit()

#Ergebnisdetails anzeigen
print(results.summary())

# plot
#plt.plot(X)

** 2. Versuchen Sie, die Konfiguration aufzuteilen **   [1] Importieren der Bibliothek und Lesen der CSV-Datei

jupyer



#Fiktive Verkaufsdaten
# infile = './sales_item_tf.csv'
import pandas as pd
#import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
import seaborn as sns

#CSV-Datei
infile = './sales_item_tf.csv'

df = pd.read_csv(infile ,usecols={'earnings' ,'customer' 
                                  ,'fortified_sweet' ,'brown_spirits' ,'rum' ,'cocktail' ,'bar_food','cigar'})

df.columns

Index(['earnings', 'customer', 'fortified_sweet', 'rum', 'brown_spirits',
       'cocktail', 'bar_food', 'cigar'],
      dtype='object')

[2] Ersatzdaten für erklärende Variable (X) und objektive Variable (y)

jupyter



#Zuordnungsvariable X zuordnen
X = df.loc[: ,'customer':'cigar']
X = df[['customer' ,'cigar']]
X = X.astype(float)

X.head()

	customer 	fortified_sweet 	rum 	brown_spirits 	cocktail 	bar_food 	cigar
0 	5.0 	2.0 	2.0 	2.0 	2.0 	5.0 	1.0
1 	10.0 	8.0 	5.0 	1.0 	2.0 	2.0 	1.0
2 	10.0 	5.0 	2.0 	2.0 	2.0 	2.0 	0.0
3 	6.0 	5.0 	5.0 	3.0 	2.0 	0.0 	0.0
4 	10.0 	5.0 	6.0 	2.0 	5.0 	5.0 	

y

0     30000.0
1     60000.0
2     50000.0
3     30000.0
4     40000.0
       ...    
56    50000.0
57    48000.0
58    40000.0
59    20000.0
60    20000.0
Name: earnings, Length: 61, dtype: float64

Die erklärende Variable (X) und die Zielvariable (y) werden in Float-Typ geändert. </ font> Ich habe hier angehalten. ** Es scheint, dass ein Fehler auftritt, wenn Sie ihn beim Anwenden des Modells nicht als Float-Typ festlegen. ** ** **

[3] Anwenden des Modells und Anzeigen der Zusammenfassung

statsmodels



#Regressionsmodell aufrufen
model = sm.OLS(y, sm.add_constant(X))

#Modell erstellen
results = model.fit()

#Ergebnisdetails anzeigen
print(results.summary())


                            OLS Regression Results                            
==============================================================================
Dep. Variable:               earnings   R-squared:                       0.930
Model:                            OLS   Adj. R-squared:                  0.921
Method:                 Least Squares   F-statistic:                     100.8
Date:                Sat, 09 May 2020   Prob (F-statistic):           2.50e-28
Time:                        01:09:38   Log-Likelihood:                -618.49
No. Observations:                  61   AIC:                             1253.
Df Residuals:                      53   BIC:                             1270.
Df Model:                           7                                         
Covariance Type:            nonrobust                                         
===================================================================================
                      coef    std err          t      P>|t|      [0.025      0.975]
-----------------------------------------------------------------------------------
const            -435.1552   2434.515     -0.179      0.859   -5318.173    4447.863
customer         5103.4245    617.184      8.269      0.000    3865.511    6341.338
fortified_sweet   844.1247    543.874      1.552      0.127    -246.747    1934.997
rum              -389.6465    440.184     -0.885      0.380   -1272.545     493.252
brown_spirits    1267.2019    581.664      2.179      0.034     100.532    2433.872
cocktail        -1766.9369    568.908     -3.106      0.003   -2908.022    -625.852
bar_food           74.3759    514.091      0.145      0.886    -956.760    1105.512
cigar            4420.0626    599.323      7.375      0.000    3217.972    5622.153
==============================================================================
Omnibus:                       16.459   Durbin-Watson:                   1.864
Prob(Omnibus):                  0.000   Jarque-Bera (JB):               24.107
Skew:                           0.971   Prob(JB):                     5.83e-06
Kurtosis:                       5.390   Cond. No.                         37.4
==============================================================================

Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

Derzeit scheint das Modell angewendet worden zu sein.

Es ist etwas länger her, also werde ich es in zwei Teile teilen. Schauen wir uns zunächst die Ergebnisse der Zusammenfassung an.

** Einmal fertig, [für Anfänger] Es war für Leute, die bei ihren eigenen Daten des Regressionsmodells (Statistikmodelle (1. Mal)) stehen blieben. ** ** **

Recommended Posts