2. Analyse multivariée décrite dans Python 1-2. Analyse de régression simple (algorithme)

Nous trouverons une équation de régression simple utilisant uniquement Numpy et Pandas, qui sont nécessaires pour les calculs numériques de base.

** ⑴ Importer la bibliothèque **

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

** ⑵ Importez des données et vérifiez le contenu **

df = pd.read_csv("https://raw.githubusercontent.com/karaage0703/machine-learning-study/master/data/karaage_data.csv")
print(df.head())

002_002_001.PNG

** Méthode du carré minimum </ font> **

Le but de l'analyse de régression simple était de trouver les deux constantes contenues dans l'équation de régression: le coefficient de régression $ a $ et la section $ b $. A ce moment-là, afin d'obtenir une équation de régression simple plus précise, les constantes $ a $ et $ b $ sont déterminées de sorte que l'erreur globale, c'est-à-dire le résidu $ y- \ hat {y} $ soit aussi petite que possible. Je dois. Considérez cette ** définition des résidus **. 002_002_002.PNG e_{1}+e_{2}+e_{3}…+e_{n} Cela ressemble à ceci, mais c'est incorrect. Les valeurs mesurées sont inégalement réparties sur chacun des côtés positifs et négatifs de la droite de régression. En d'autres termes, le plus et le moins s'annulent et le total est de 0. 002_002_003.PNG Par conséquent, en mettant au carré le résidu pour chaque individu, le positif et le négatif sont éliminés afin qu'il puisse être traité simplement comme la taille (distance) de la distance. Q = {e_{1}}^{2}+{e_{2}}^{2}+{e_{3}}^{2}…+{e_{n}}^{2} $ Q $ a été défini comme la distance totale par rapport à la droite de régression. Le plus petit de ces $ Q $ est le facteur décisif pour la pente de la droite de régression $ a $, et s'il est obtenu, l'intersection $ b $ avec l'axe $ y $ peut être obtenue naturellement. Cette méthode est appelée la ** méthode des moindres carrés **.

Nous allons résoudre l'équation de régression simple basée sur la méthode des moindres carrés.

** ⑶ Calculez la valeur moyenne de chacune des variables x et y **

mean_x = df['x'].mean()
mean_y = df['y'].mean()

002_002_004.PNG

** ⑷ Calculez l'écart de chacune des variables x et y **

L'écart est la différence entre la valeur numérique et la valeur moyenne de chaque individu. Calculez $ x_ {i} - \ bar {x} $ pour la variable $ x $ et $ y- \ bar {y} $ pour la variable $ y $. Chaque variable sera calculée pour le nombre de données.

#Écart de x
dev_x = []
for i in df['x']:
    dx = i - mean_x
    dev_x.append(dx)
#écart de y
dev_y = []
for j in df['y']:
    dy = j - mean_y
    dev_y.append(dy)

002_002_005.PNG

** ⑸ Calculez la distribution de la variable x **

Calculez la variance en utilisant l'écart obtenu en (4). La variance est la moyenne des carrés des écarts, c'est-à-dire les carrés pour chaque écart et la somme des écarts divisée par la valeur numérique (nombre de données-1).

#Somme des carrés de déviation
ssdev_x = 0
for i in dev_x:
    d = i ** 2
    ssdev_x += d
#Distribué
var_x = ssdev_x / (len(df) - 1)

002_002_006.PNG

** ⑹ Calculer la covariance **

La covariance $ s_ {xy} $ est l'un des indices montrant la force de la relation entre deux variables et est définie par l'équation suivante. s_{xy} = \frac{1}{n - 1} \displaystyle \sum_{i = 1}^n {(x_i - \overline{x})(y_{i} - \overline{y})} Considérez un ensemble de données pour chaque individu. Lorsqu'il y a une paire $ n $ de $ (x_ {1}, y_ {1}), (x_ {2}, y_ {2}), ..., (x_ {n}, y_ {n}) $ Multipliez l'écart de $ x $ et l'écart de $ y $ pour chaque paire, et divisez leur somme par la valeur numérique de (nombre de données-1).

#Somme des écarts
spdev = 0
for i,j in zip(df['x'], df['y']):
    spdev += (i - mean_x) * (j - mean_y)
#Co-distribué
cov = spdev / (len(df) - 1)

002_002_007.PNG

** ⑺ Calculer le coefficient de régression a **

Voici la formule pour trouver le coefficient de régression par la méthode des moindres carrés. a = \frac{S_{xy}}{Sx^2} Le coefficient de régression $ a $ peut être obtenu en divisant la covariance $ S_ {xy} $ obtenue en ⑹ par la variance $ Sx ^ 2 $ de la variable $ x $ obtenue en ⑸.

a = cov / var_x

002_002_008.PNG

** ⑻ Calculer la section b **

En transformant l'équation de régression simple $ y = ax + b $ et en fixant $ b = y -ax $, la valeur moyenne $ \ bar {x}, \ bar {y} $ obtenue en (3) et le coefficient de régression obtenu en (8) Remplacez $ a $.

b = mean_y - (a * mean_x)

002_002_009.PNG

** Comme mentionné ci-dessus, l'équation de régression simple a été obtenue par la formule de la méthode des moindres carrés. ** ** ** Il correspond au résultat du calcul obtenu à l'aide de la bibliothèque d'apprentissage automatique scikit-learn plus tôt. Par conséquent, je vais également calculer moi-même la confirmation du coefficient de décision. ** **

** ⑼ Calculez le coefficient de décision et vérifiez l'exactitude de l'équation de régression **

Créez des données de valeur prédite à l'aide d'une équation de régression et trouvez sa variance. Quel pourcentage de la variance de la valeur mesurée $ y $, c'est-à-dire à quel point la variable originale $ y $ peut-elle être expliquée?

#Création de données de valeur prédite z
df['z'] = (a * df['x']) + b
print(df)

#Valeur de prédiction variance z
ssdev_z = 0
for i in df['z']:
    j = (i - df['z'].mean())**2
    ssdev_z += j
var_z = ssdev_z / (len(df) - 1)
print("Distribution de la valeur prévue:", var_z)

#Dispersion de la valeur mesurée y
ssdev_y = 0
for i in dev_y:
    j = i ** 2
    ssdev_y += j
var_y = ssdev_y / (len(df) - 1)
print("Dispersion de la valeur mesurée y:", var_y)

#Coefficient de décision
R = var_z / var_y
print("Facteur de décision R:", R)

002_002_010.PNG Il a été confirmé que le coefficient de détermination concorde également avec le résultat du calcul par scikit-learn ci-dessus.

** ⑽ Afficher le diagramme de dispersion avec la droite de régression **

plt.plot(x, y, "o") #Nuage de points
plt.plot(x, z, "r") #Retour en ligne droite
plt.show()

002_002_011.PNG

Jusqu'à présent, vous avez appris les algorithmes pour une analyse de régression simple. Cependant, dans le monde réel, il existe peu de cas où un certain phénomène peut être expliqué par un seul facteur. Dans le contexte d'un certain phénomène, divers facteurs s'entremêlent en même temps, plus ou moins. Ensuite, vous apprendrez l'analyse de régression multiple qui traite de trois variables ou plus.

Recommended Posts

2. Analyse multivariée décrite dans Python 1-2. Analyse de régression simple (algorithme)
2. Analyse multivariée définie dans Python 1-1. Analyse de régression simple (scikit-learn)
2. Analyse multivariée décrite dans Python 3-2. Analyse en composantes principales (algorithme)
2. Analyse multivariée décrite dans Python 2-1. Analyse de régression multiple (scikit-learn)
2. Analyse multivariée expliquée dans Python 5-3. Analyse de régression logistique (modèles statistiques)
Analyse de régression simple avec Python
2. Analyse multivariée détaillée dans Python 2-3. Analyse de régression multiple [taux d’infection au COVID-19]
Première analyse de régression simple en Python
2. Analyse multivariée décrite dans Python 7-1. Arbre de décision (scikit-learn)
2. Analyse multivariée décrite dans Python 6-1. Régression de crête / Régression de lasso (scikit-learn) [régression multiple vs régression de crête]
2. Analyse multivariée expliquée dans Python 8-2. Méthode de voisinage k [méthode de pondération] [modèle de retour]
2. Analyse multivariée expliquée dans Python 3-1. Analyse en composantes principales (scikit-learn)
2. Analyse multivariée décrite dans Python 6-3. Régression Ridge / Régression Lasso (scikit-learn) [Fonctionnement de la régularisation]
2. Analyse multivariée expliquée dans Python 8-1. Méthode de voisinage k (scikit-learn)
2. Analyse multivariée énoncée dans Python 8-3. Méthode de voisinage K [vérification d'intersection]
Analyse de régression avec Python
2. Analyse multivariée expliquée dans Python 7-2. Arbre de décision [différence de critères de division]
Algorithme d'apprentissage automatique (analyse de régression unique)
Implémentation d'un algorithme simple en Python 2
Implémentation simple de l'analyse de régression avec Keras
Exécutez un algorithme simple en Python
Ecrire une méthode de cupidité simple en Python
GRPC simple en Python
Algorithme génétique en python
Algorithme en Python (méthode Bellman-Ford, Bellman-Ford)
Analyse d'association en Python
Algorithme en Python (Dijkstra)
Python Scikit-learn Analyse de régression linéaire Analyse de régression simple non linéaire Apprentissage automatique
Calculer le coefficient de régression d'une analyse de régression simple avec python
Expression de régression multiple en Python
Algorithme en Python (jugement premier)
Analyse des contraintes symétriques axiales avec Python
Reproduire la méthode de division mutuelle euclidienne en Python
Algorithme en Python (dichotomie)
Implémenter l'algorithme de Dijkstra en python
Régression linéaire en ligne en Python
Client IRC simple avec python
Analyse de régression simple comprise par les mathématiques du lycée-vérification de la loi de Moore
Analyse des ondes cérébrales avec Python: tutoriel Python MNE
Une analyse simple des données de Bitcoin fournie par CoinMetrics en Python
OAuth 2 simple avec Python (urllib + oauthlib)
Algorithme de tri et implémentation en Python
[Python] PCA scratch dans l'exemple de "Introduction à la méthode d'analyse multivariée"
Algorithme d'apprentissage automatique (analyse de régression multiple)
Ecrire des algorithmes A * (A-star) en Python
[Test statistique 2e année / quasi 1e année] Formation à l'analyse régressive avec Python (2)
Développons un algorithme d'investissement avec Python 2
Algorithme en Python (recherche de priorité en profondeur, dfs)
Statistiques prédictives (pratique de la régression simple) Python
[Test statistique 2e année / quasi 1e année] Formation à l'analyse régressive avec Python (1)
Analyse du squelette planaire dans Python (2) Hotfix
Algorithme (arborescence de segments) en Python (s'entraîner)
Analyse de régression logistique Self-made avec python
Logique gacha simple écrite en Python
Statistiques prédictives (pratique de la régression simple) Python
Statistiques prédictives (classification des pratiques) Python
Expression de régression multiple en Python
Statistiques avec python
Statistiques prédictives (théorie)
Les débutants pratiquent Python
2. Analyse multivariée décrite dans Python 2-1. Analyse de régression multiple (scikit-learn)
Première 3e édition de Python
Statistiques de prédiction de fonctionnalités python
Merge Nodes-Houdini Python Practice
Python: apprentissage supervisé (retour)
Analyse de régression avec Python
Régression linéaire en Python (statmodels, scikit-learn, PyMC3)
Un client HTTP simple implémenté en Python
Livre Ali en python: méthode Dyxtra Sec.2-5
Algorithme en Python (ABC 146 C Dichotomy
Essayez de dessiner une animation simple en Python
Régression linéaire en ligne en Python (estimation robuste)