terça-feira, 18 de abril de 2023

Regressão linear multi grupo / predição / coeficiente angular e significância

 import pandas as pd

import matplotlib.pyplot as plt

import numpy as np

from sklearn.linear_model import LinearRegression




plt.style.use('ggplot')

df = pd.read_csv('data.csv')

df_1 = df[df['sp'] == 1]

df_2 = df[df['sp'] == 2]

df_3 = df[df['sp'] == 3]

df_4 = df[df['sp'] == 4]

df_5 = df[df['sp'] == 5]

#df_1 = df[df['sp'] == 'ancistrus']

sp1_fit = np.polyfit(df_1.cp, df_1.peito, 1)

sp2_fit = np.polyfit(df_2.cp, df_2.peito, 1)

sp3_fit = np.polyfit(df_3.cp, df_3.peito, 1)

sp4_fit = np.polyfit(df_4.cp, df_4.peito, 1)

sp5_fit = np.polyfit(df_5.cp, df_5.peito, 1)


# Scatter plots.

#ax1 = df[df['nome_coluna'] == 'nomelinha'].plot(kind='scatter', x='nomecolunaA', y='nomecolunaB', color='blue', alpha=0.5, figsize=(10, 7))

ax1 = df[df['sp'] == 1].plot(kind='scatter', x='cp', y='peito', color='blue', alpha=0.5, figsize=(10, 7))

df[df['sp'] == 2].plot(kind='scatter', x='cp', y='peito', color='red', alpha=0.5, figsize=(10 ,7), ax=ax1)

df[df['sp'] == 3].plot(kind='scatter', x='cp', y='peito', color='purple', alpha=0.5, figsize=(10 ,7), ax=ax1)

df[df['sp'] == 4].plot(kind='scatter', x='cp', y='peito', color='orange', alpha=0.5, figsize=(10 ,7), ax=ax1)

df[df['sp'] == 5].plot(kind='scatter', x='cp', y='peito', color='green', alpha=0.5, figsize=(10 ,7), ax=ax1)

plt.legend(labels=['nomes', 'nomes2'])

plt.title('titulo', size=24)

plt.xlabel('nomeBarrax', size=18)

plt.ylabel('nomeBarraY', size=18);


# regression lines

plt.plot(df_1.cp, sp1_fit[0] * df_1.cp + sp1_fit[1], color='darkblue', linewidth=2)

plt.plot(df_2.cp, sp2_fit[0] * df_2.cp + sp2_fit[1], color='deeppink', linewidth=2)

plt.plot(df_3.cp, sp3_fit[0] * df_3.cp + sp3_fit[1], color='purple', linewidth=2)

plt.plot(df_4.cp, sp4_fit[0] * df_4.cp + sp4_fit[1], color='orange', linewidth=2)

plt.plot(df_5.cp, sp5_fit[0] * df_5.cp + sp5_fit[1], color='green', linewidth=2)


# legend, title and labels.
plt.legend(labels=['Males Regresion Line', 'Females Regresion Line', 'Males', 'Females'])
plt.title('Relationship between Height and Weight', size=24)
plt.xlabel('Height (inches)', size=18)
plt.ylabel('Weight (pounds)', size=18);

# rodar os 3 juntos


lr_espinho = LinearRegression()

lr_espinho.fit(df_1[['cp']], df_1['peito'])

print(lr_espinho.intercept_)


sp1_fit = np.polyfit(df_1.cp, df_1.peito, 1)

sp2_fit = np.polyfit(df_2.cp, df_2.peito, 1)


#Coeficiente Angular  

print(np.polyval(sp1_fit, [50]))

# 60 [17.82209715]  - 50[14.26088829] #x=50 e x=60

#3.56 / diferença do X(10)

print(np.polyval(sp2_fit, [60]))

#60 [17.1713] & 50[13.7081]

#3.46


Ex: tabela csv


Ex: resultado 


 



Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.