006 ‐ Supervised Machine Learning Análise de Regressão Simples e Múltipla - NaimeAndere/Study-Area GitHub Wiki
Modelos é uma simplificação da realidade, que omitem ou distorções da realidade.
Diferentes pesquisadores, a partir de uma mesma base de dados, podem estimar diferentes modelos e consequentemente, obter diferentes valores previstos do fenômeno de estudo.”
DEFINIÇÃO
1- Correlação não implica casualidade
2 - Predição na Interpolação (dentro do intervalo máximo e mínimo)
Você não conhece as ações fora do intervalo máximo e mínimo, sendo assim, o estudo deve ser considerado somente dentro dos intervalos calculados
| Conceito | Descrição | Função em Python (usando bibliotecas comuns) |
|---|---|---|
| Alfa (α) | Nível de significância, a probabilidade de rejeitar a hipótese nula quando ela é verdadeira (erro tipo I). | Definido pelo usuário (comum: 0.05 ou 5%) |
| Beta (β) | Probabilidade de não rejeitar a hipótese nula quando ela é falsa (erro tipo II). | Calculado através de análises de poder estatístico |
| R² (Coeficiente de Determinação) | Medida da proporção da variação total que é explicada pelo modelo. | sklearn.metrics.r2_score |
| R² Ajustado | Versão ajustada do R² que penaliza pela inclusão de variáveis irrelevantes no modelo. | Calculado manualmente: 1 - (1-R²)*(n-1)/(n-k-1) |
| Teste F | Teste para comparar modelos estatísticos ajustados a um conjunto de dados para identificar o melhor ajuste. | scipy.stats.f_oneway |
| Teste t | Teste para determinar se há uma diferença significativa entre as médias de dois grupos. | scipy.stats.ttest_ind (para duas amostras independentes) |
| Teste t de Student | Variante do teste t usada para amostras pequenas, assumindo que a distribuição das amostras é normal. | scipy.stats.ttest_rel (para amostras pareadas) |
| p-valor | Probabilidade de observar um resultado extremo se a hipótese nula for verdadeira. | Retornado pelos testes estatísticos (ex: ttest_ind) |
| Intervalo de Confiança | Intervalo onde se espera que o parâmetro populacional verdadeiro esteja com uma certa confiança (ex: 95%). | statsmodels.stats.weightstats.DescrStatsW.tconfint_mean |
#Examplo
import numpy as np
import scipy.stats as stats
from sklearn.metrics import r2_score
# Dados fictícios
x = np.random.rand(100)
y = 2 * x + np.random.rand(100)
# R² e R² Ajustado
r2 = r2_score(x, y)
n = len(x)
k = 1 # número de preditores
r2_adjusted = 1 - (1 - r2) * (n - 1) / (n - k - 1)
# Teste F (ANOVA)
f_stat, p_value_f = stats.f_oneway(x, y)
# Teste t para duas amostras independentes
t_stat, p_value_t = stats.ttest_ind(x, y)
# Intervalo de Confiança (exemplo com statsmodels)
import statsmodels.stats.api as sms
desc = sms.DescrStatsW(y)
conf_int = desc.tconfint_mean()
print(f"R²: {r2}")
print(f"R² Ajustado: {r2_adjusted}")
print(f"Teste F: estatística = {f_stat}, p-valor = {p_value_f}")
print(f"Teste t: estatística = {t_stat}, p-valor = {p_value_t}")
print(f"Intervalo de Confiança (95%): {conf_int}")
Uma variável preditora, também conhecida como variável independente, é uma variável que é usada para prever ou explicar mudanças em outra variável, chamada de variável resposta ou dependente. Em termos mais simples, uma variável preditora é aquela que você acredita ter um impacto ou uma influência sobre a variável que você está tentando entender ou prever.
Vamos supor que você está tentando prever o preço de venda de uma casa. As variáveis preditoras podem incluir:
- Área da casa (em metros quadrados)
- Número de quartos
- Número de banheiros
- Localização
- Ano de construção
Neste caso, o preço de venda é a variável resposta, e todas as outras variáveis listadas são variáveis preditoras. Elas são chamadas assim porque se acredita que elas podem prever ou explicar variações no preço de venda.
-
Regressão Linear:
- Variável resposta (dependente): Preço de venda da casa.
- Variáveis preditoras (independentes): Área da casa, número de quartos, localização, etc.
-
Classificação:
- Variável resposta (dependente): Diagnóstico de uma doença (presença ou ausência).
- Variáveis preditoras (independentes): Idade, nível de colesterol, pressão sanguínea, etc.
Para entender como isso funciona na prática, vamos considerar um exemplo simples de regressão linear em Python usando a biblioteca sklearn:
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
Dados fictícios: Área da casa (em metros quadrados) e Preço de venda (em milhares de dólares)
area = np.array([50, 60, 70, 80, 90, 100]).reshape(-1, 1) # Variável preditora
preco = np.array([150, 180, 210, 240, 270, 300]) # Variável resposta
Criando o modelo de regressão linear
modelo = LinearRegression()
modelo.fit(area, preco)
Fazendo previsões
previsoes = modelo.predict(area)
Plotando os resultados
plt.scatter(area, preco, color='blue', label='Dados reais')
plt.plot(area, previsoes, color='red', label='Linha de regressão')
plt.xlabel('Área da casa (m²)')
plt.ylabel('Preço de venda (milhares de dólares)')
plt.title('Regressão Linear')
plt.legend()
plt.show()
Coeficientes do modelo
print(f"Coeficiente (slope): {modelo.coef_[0]}")
print(f"Intercepto (intercept): {modelo.intercept_}")
Neste exemplo, area é a variável preditora e preco é a variável resposta. O modelo de regressão linear tenta encontrar a melhor linha que se ajusta aos dados para prever o preço de venda com base na área da casa.
Diferentes pesquisadores, a partir de uma mesma base de dados, podem estimar diferentes modelos e consequentemente, obter diferentes valores previstos do fenômeno de estudo.”
[Estudo - ANÁLISE DE REGRESSÃO SIMPLES E MÚLTIPLA](https://www.notion.so/Estudo-AN-LISE-DE-REGRESS-O-SIMPLES-E-M-LTIPLA-b15c8f8d1eb84bbcbe3ab54331355959?pvs=21)
Exemplo 4 - REGRESSÃO NÃO LINEAR E TRANSFORMAÇÃO DE BOX-COX
Exemplo 5 - REGRESSÃO NÃO LINEAR MÚLTIPLA
[Exemplo 6 - DIAGNÓSTICO DE MULTICOLINEARIDADE EM MODELOS DE REGRESSÃO](https://www.notion.so/Exemplo-6-DIAGN-STICO-DE-MULTICOLINEARIDADE-EM-MODELOS-DE-REGRESS-O-5495ce3565cf413ca7ae83f221f8fb2f?pvs=21)
Exemplo 7 - DIAGNÓSTICO DE HETEROCEDASTICIDADE EM MODELOS DE REGRESSÃO
[Exemplo 8 - REGRESSÃO NÃO LINEAR MÚLTIPLA COM DUMMIES ](https://www.notion.so/Exemplo-8-REGRESS-O-N-O-LINEAR-M-LTIPLA-COM-DUMMIES-9d12cca15dbf48129164e1aa9c23c36b?pvs=21)
DEFINIÇÃO
1- Correlação não implica casualidade
2 - Predição na Interpolação (dentro do intervalo máximo e mínimo)
Você não conhece as ações fora do intervalo máximo e mínimo, sendo assim, o estudo deve ser considerado somente dentro dos intervalos calculados
| Conceito | Descrição | Função em Python (usando bibliotecas comuns) |
|---|---|---|
| Alfa (α) | Nível de significância, a probabilidade de rejeitar a hipótese nula quando ela é verdadeira (erro tipo I). | Definido pelo usuário (comum: 0.05 ou 5%) |
| Beta (β) | Probabilidade de não rejeitar a hipótese nula quando ela é falsa (erro tipo II). | Calculado através de análises de poder estatístico |
| R² (Coeficiente de Determinação) | Medida da proporção da variação total que é explicada pelo modelo. | sklearn.metrics.r2_score |
| R² Ajustado | Versão ajustada do R² que penaliza pela inclusão de variáveis irrelevantes no modelo. | Calculado manualmente: 1 - (1-R²)*(n-1)/(n-k-1)
|
| Teste F | Teste para comparar modelos estatísticos ajustados a um conjunto de dados para identificar o melhor ajuste. | scipy.stats.f_oneway |
| Teste t | Teste para determinar se há uma diferença significativa entre as médias de dois grupos. |
scipy.stats.ttest_ind (para duas amostras independentes) |
| Teste t de Student | Variante do teste t usada para amostras pequenas, assumindo que a distribuição das amostras é normal. |
scipy.stats.ttest_rel (para amostras pareadas) |
| p-valor | Probabilidade de observar um resultado extremo se a hipótese nula for verdadeira. | Retornado pelos testes estatísticos (ex: ttest_ind) |
| Intervalo de Confiança | Intervalo onde se espera que o parâmetro populacional verdadeiro esteja com uma certa confiança (ex: 95%). | statsmodels.stats.weightstats.DescrStatsW.tconfint_mean |
#Examplo
import numpy as np
import scipy.stats as stats
from sklearn.metrics import r2_score
# Dados fictícios
x = np.random.rand(100)
y = 2 * x + np.random.rand(100)
# R² e R² Ajustado
r2 = r2_score(x, y)
n = len(x)
k = 1 # número de preditores
r2_adjusted = 1 - (1 - r2) * (n - 1) / (n - k - 1)
# Teste F (ANOVA)
f_stat, p_value_f = stats.f_oneway(x, y)
# Teste t para duas amostras independentes
t_stat, p_value_t = stats.ttest_ind(x, y)
# Intervalo de Confiança (exemplo com statsmodels)
import statsmodels.stats.api as sms
desc = sms.DescrStatsW(y)
conf_int = desc.tconfint_mean()
print(f"R²: {r2}")
print(f"R² Ajustado: {r2_adjusted}")
print(f"Teste F: estatística = {f_stat}, p-valor = {p_value_f}")
print(f"Teste t: estatística = {t_stat}, p-valor = {p_value_t}")
print(f"Intervalo de Confiança (95%): {conf_int}")Uma variável preditora, também conhecida como variável independente, é uma variável que é usada para prever ou explicar mudanças em outra variável, chamada de variável resposta ou dependente. Em termos mais simples, uma variável preditora é aquela que você acredita ter um impacto ou uma influência sobre a variável que você está tentando entender ou prever.
Vamos supor que você está tentando prever o preço de venda de uma casa. As variáveis preditoras podem incluir:
- Área da casa (em metros quadrados)
- Número de quartos
- Número de banheiros
- Localização
- Ano de construção
Neste caso, o preço de venda é a variável resposta, e todas as outras variáveis listadas são variáveis preditoras. Elas são chamadas assim porque se acredita que elas podem prever ou explicar variações no preço de venda.
-
Regressão Linear:
- Variável resposta (dependente): Preço de venda da casa.
- Variáveis preditoras (independentes): Área da casa, número de quartos, localização, etc.
-
Classificação:
- Variável resposta (dependente): Diagnóstico de uma doença (presença ou ausência).
- Variáveis preditoras (independentes): Idade, nível de colesterol, pressão sanguínea, etc.
Para entender como isso funciona na prática, vamos considerar um exemplo simples de regressão linear em Python usando a biblioteca sklearn:
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
# Dados fictícios: Área da casa (em metros quadrados) e Preço de venda (em milhares de dólares)
area = np.array([50, 60, 70, 80, 90, 100]).reshape(-1, 1) # Variável preditora
preco = np.array([150, 180, 210, 240, 270, 300]) # Variável resposta
# Criando o modelo de regressão linear
modelo = LinearRegression()
modelo.fit(area, preco)
# Fazendo previsões
previsoes = modelo.predict(area)
# Plotando os resultados
plt.scatter(area, preco, color='blue', label='Dados reais')
plt.plot(area, previsoes, color='red', label='Linha de regressão')
plt.xlabel('Área da casa (m²)')
plt.ylabel('Preço de venda (milhares de dólares)')
plt.title('Regressão Linear')
plt.legend()
plt.show()
# Coeficientes do modelo
print(f"Coeficiente (slope): {modelo.coef_[0]}")
print(f"Intercepto (intercept): {modelo.intercept_}")Neste exemplo, area é a variável preditora e preco é a variável resposta. O modelo de regressão linear tenta encontrar a melhor linha que se ajusta aos dados para prever o preço de venda com base na área da casa.