Existe uma chance de ter algo errado quando o modelo é feito sem usar o periodo todo que os dados foram coletados (2003/2023.12). Verificar com outros alunos para ver se tem diferenca.

FUNCOES QUE EU ESTOU USANDO

regressao_personalizada <- function(dados, dependent_var, independent_vars, start_date, end_date) {
  # Filtrando os dados pelo intervalo de datas desejado
  dados_filtrados <- dados[dados$data >= start_date & dados$data <= end_date, ]
  
  # Criando a fórmula para a regressão
  formula <- as.formula(paste(dependent_var, "~", paste(independent_vars, collapse = " + ")))
  
  # Realizando a regressão linear
  model <- lm(formula, data = dados_filtrados)
  #rodrigo Retornando o modelo
  return(model)
}
analisar_modelo <- function(modelo) {
  residuos <- residuals(modelo)
##Rodrigo
  # Plot dos resíduos
  plot(residuos, type="l", col="red")
  abline(h=0, col="blue", lw=3)
  
  # Histograma dos resíduos
  hist(residuos, main="", col="cadetblue", prob=T, xlab = names(residuos)[1], breaks = 30)
  curve(expr=dnorm(x,mean=mean(residuos),sd=sd(residuos)),col="red",add= TRUE, lwd=2)
  
  # Teste de Jarque-Bera
  jarquebera <- jarqueberaTest(residuos)
  print(jarquebera)
  
  # QQ plot dos resíduos
  qqnorm(residuos, col="blue")
  qqline(residuos, col="red")
  
  # Teste de Shapiro-Wilk
  shapiro <- shapiro.test(residuos)
  print(shapiro)
  
  # Teste de heterocedasticidade
  coeftest_result <- coeftest(modelo)
  print(coeftest_result)
  n <- length(residuos)
  
  # Teste de heterocedasticidade
  gqtest_result <- gqtest(modelo, fraction = n * 0.15, alternative = "greater")
  print(gqtest_result)
  
  # Teste de Breusch-Pagan
  bptest_result <- bptest(modelo)
  print(bptest_result)
  
  # Teste de White
  white_test_result <- white_test(modelo)
  print(white_test_result)
  
  # Teste de Durbin-Watson
  dwtest_result <- dwtest(modelo)
  print(dwtest_result)
  
  # Teste de Autocorrelação
  ArchTest_result <- ArchTest(residuos, lags = 2)
  print(ArchTest_result)
  
  # Teste de Box-Pierce
  Box.test_result <- Box.test(residuos, lag=12, type="Box-Pierce")
  print(Box.test_result)
  # Teste de Dickey-Fuller
  df_test <- adf.test(residuos)
  print(df_test)
  ##Rodrigo
  # Retorna o modelo e os resultados dos testes
  return(list(modelo = modelo, residuos = residuos, jarque_bera = jarquebera, shapiro = shapiro, coeftest = coeftest_result, gqtest = gqtest_result, bptest = bptest_result, white_test = white_test_result, dwtest = dwtest_result, ArchTest = ArchTest_result, Box.test = Box.test_result))
}
# Função para capturar as datas inseridas pelo usuário
renderRegModel <- function(start_date, end_date) {
  # Chama a função regressao_personalizada com as datas fornecidas pelo usuário
  resultado <- regressao_personalizada(Dadosn, dependent_var, independent_vars, start_date, end_date)
  
  # Retorna o resumo do modelo
  return(summary(resultado))
}

ARRUMANDO OS DADOS

Dadosn <- as.data.frame(taylor)
Dadosn$data <- seq(as.Date("2003-01-01"), by = "month", length.out = nrow(Dadosn))
str(Dadosn)
## 'data.frame':    252 obs. of  5 variables:
##  $ selic : num  25.1 25.7 26.3 26.3 26.3 ...
##  $ desvio: num  0.73 0.67 4.98 2.29 2.35 ...
##  $ hiato : num  1.888 1.018 0.578 0.307 0.12 ...
##  $ cambio: num  3.53 3.56 3.35 2.89 2.97 ...
##  $ data  : Date, format: "2003-01-01" "2003-02-01" ...

Para arrumar o modelo so mudar as datas e as variaveis independentes(“desvio”,“hiato”,“cambio”)

start_date <- as.Date("2019-01-01") # Data inicial desejada
end_date <- as.Date("2022-12-01") # Data final desejada
dependent_var <- "selic"
independent_vars <- c("desvio","hiato","cambio") # Adicione as variáveis independentes desejadas

Chamando a funcao pra fazer o mqo

# Chamando a função
completao <- regressao_personalizada(Dadosn, dependent_var, independent_vars, start_date, end_date)

# Visualizando os resultados
summary(completao)
## 
## Call:
## lm(formula = formula, data = dados_filtrados)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.5071 -0.9242  0.1379  1.1416  4.8433 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  12.8727     2.6620   4.836 1.66e-05 ***
## desvio        2.5460     0.2832   8.992 1.59e-11 ***
## hiato         0.9254     0.2154   4.295 9.48e-05 ***
## cambio       -1.4366     0.5529  -2.598   0.0127 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.15 on 44 degrees of freedom
## Multiple R-squared:  0.725,  Adjusted R-squared:  0.7063 
## F-statistic: 38.67 on 3 and 44 DF,  p-value: 2.131e-12

Chamando a funcao que analisa o modelo

novo <- analisar_modelo(completao)

## 
## Title:
##  Jarque - Bera Normalality Test
## 
## Test Results:
##   STATISTIC:
##     X-squared: 0.3283
##   P VALUE:
##     Asymptotic p Value: 0.8486

## 
##  Shapiro-Wilk normality test
## 
## data:  residuos
## W = 0.97727, p-value = 0.4708
## 
## 
## t test of coefficients:
## 
##             Estimate Std. Error t value  Pr(>|t|)    
## (Intercept) 12.87268    2.66196  4.8358 1.655e-05 ***
## desvio       2.54601    0.28315  8.9917 1.594e-11 ***
## hiato        0.92539    0.21544  4.2953 9.475e-05 ***
## cambio      -1.43658    0.55286 -2.5985   0.01269 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
##  Goldfeld-Quandt test
## 
## data:  modelo
## GQ = 30.195, df1 = 17, df2 = 16, p-value = 5.213e-09
## alternative hypothesis: variance increases from segment 1 to 2
## 
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo
## BP = 14.214, df = 3, p-value = 0.002627
## 
## White's test results
## 
## Null hypothesis: Homoskedasticity of the residuals
## Alternative hypothesis: Heteroskedasticity of the residuals
## Test Statistic: 8.51
## P-value: 0.014202
## 
##  Durbin-Watson test
## 
## data:  modelo
## DW = 0.2499, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0
## 
## 
##  ARCH LM-test; Null hypothesis: no ARCH effects
## 
## data:  residuos
## Chi-squared = 24.795, df = 2, p-value = 4.129e-06
## 
## 
##  Box-Pierce test
## 
## data:  residuos
## X-squared = 115.86, df = 12, p-value < 2.2e-16
## 
## 
##  Augmented Dickey-Fuller Test
## 
## data:  residuos
## Dickey-Fuller = -1.9967, Lag order = 3, p-value = 0.5754
## alternative hypothesis: stationary

####so rodar isso se as funcoes estiverem quebradas 2 ou testes e pa