Modelo 2

# Carregar o pacote necessário
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.2
set.seed(2024)
# Criar um conjunto de dados fictício
dados <- data.frame(
  ID_CLIENTE=sample(1:88, 88, replace = FALSE),
  Ho_Sem_Net = sample(1:120, 88, replace = T),
  Ho_OS_Aberto = sample(1:200, 88, replace = T),
  QTD_REINCIDENCIAS=sample(1:30, 88, replace = T),
  QTD_DIAS_Lt_OS=sample(0:90, 88, replace = T)
 )

#install.packages("readxl")
library("readxl")
## Warning: package 'readxl' was built under R version 4.3.2
ABERT_FECH_OS <- read_xlsx("ABERT_FECH_OS.xlsx")

ABERT_FECH_OS=ABERT_FECH_OS[,c(1,2,9)]


attach(ABERT_FECH_OS)
# install.packages("tidyverse")
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.2
## Warning: package 'tidyr' was built under R version 4.3.1
## Warning: package 'readr' was built under R version 4.3.1
## Warning: package 'purrr' was built under R version 4.3.1
## Warning: package 'dplyr' was built under R version 4.3.1
## Warning: package 'stringr' was built under R version 4.3.2
## Warning: package 'forcats' was built under R version 4.3.1
## Warning: package 'lubridate' was built under R version 4.3.1
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ lubridate 1.9.2     ✔ tibble    3.2.1
## ✔ purrr     1.0.1     ✔ tidyr     1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
set.seed(2021)
# Remova linhas duplicadas e selecione apenas duas colunas
df_resultado <- ABERT_FECH_OS %>%
  distinct(id_tipo_ordem_servico, descricao, .keep_all = TRUE)

TB=table(df_resultado$id_tipo_ordem_servico);TB
## 
##    4    5    6    7   76 1232 3152 3153 3154 3155 3156 3268 3275 3286 3287 3447 
##    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1 
## 3482 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 
##    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1 
## 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 
##    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1 
## 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3542 
##    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1 
## 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3560 
##    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1 
## 3561 3562 3563 3564 3565 3566 3567 3568 
##    1    1    1    1    1    1    1    1
df_resultado
## # A tibble: 88 × 3
##    id_tipo_ordem_servico descricao                                 id_prioridade
##                    <dbl> <chr>                                             <dbl>
##  1                  3561 06.20 INFRA - CIRCUITO DE MONITORAMENTO               4
##  2                  3562 06.21 INFRA - ROMPIMENTO FTTH /INFRA - R…             4
##  3                  3286 PROJETOS - CERTIFICAÇÃO                               4
##  4                  3287 CORRETIVA-ESTOQUE                                     4
##  5                  3563 06.22 INFRA - PREVENTIVA SITE                         4
##  6                  3565 TESTE- NÃO USAR                                       4
##  7                  3275 06.01 INFRA - AMPLIAÇÃO DE REDE                       4
##  8                  3564 04.03 CERTIFICAÇÃO DE CTO                             4
##  9                  3566 04.04 CERTIFICAÇÃO ALLREDE                            4
## 10                  3529 05.02 B2B - MUDANÇA DE ENDEREÇO                       4
## # ℹ 78 more rows
#Selecionando TIPO OS ALETORIAMENTE
t <- df_resultado[sample(nrow(df_resultado), 88, replace = TRUE), , drop = FALSE]
t$id_prioridade=sample(1:10, 88, replace = T)
names(dados)
## [1] "ID_CLIENTE"        "Ho_Sem_Net"        "Ho_OS_Aberto"     
## [4] "QTD_REINCIDENCIAS" "QTD_DIAS_Lt_OS"
DadosTModelo=data.frame(t,dados)
head(DadosTModelo)
##   id_tipo_ordem_servico                       descricao id_prioridade
## 1                  3275 06.01 INFRA - AMPLIAÇÃO DE REDE             5
## 2                  3506    02.12 MIGRAÇÃO DE TECNOLOGIA             3
## 3                  3523    03.04 ENTREGA DE EQUIPAMENTO            10
## 4                  3526               04.02 VIABILIDADE             7
## 5                  3533   05.06 MUDANÇA DE TITULARIDADE             9
## 6                  3549      06.10 INFRA - ANÁLISE OTDR             7
##   ID_CLIENTE Ho_Sem_Net Ho_OS_Aberto QTD_REINCIDENCIAS QTD_DIAS_Lt_OS
## 1         66         79          172                15             37
## 2         37        112           36                 4             71
## 3         45         59           19                15             82
## 4         60         77          152                17             84
## 5         17         96          163                20             71
## 6         32         39           37                27             30
attach(DadosTModelo)
## The following objects are masked from ABERT_FECH_OS:
## 
##     descricao, id_prioridade, id_tipo_ordem_servico
#Simulando o modelo

#Calculo do Coeficiente

# Pontos dados
x1 <- 0
y1 <- 0
x2 <- 31
y2 <- 100

# Calcular a inclinação (m)
m <- (y2 - y1) / (x2 - x1)

# Calcular o intercepto (b)
b <- (y2 - y1) / (x2 - x1)

# Exibir os resultados
cat("Inclinação (m):", m, "\n")
## Inclinação (m): 3.225806
cat("Intercepto (b):", b, "\n")
## Intercepto (b): 3.225806
#Simulando o modelo

# Coeficientes
b <- m
c <- b
b;c
## [1] 3.225806
## [1] 3.225806
# ATRIBUIÇÃO DE PRIORIDADES PARA TIPO DE OS

X3=ifelse(dados$TipoOS =="LOS",1,
          ifelse(dados$TipoOS =="LOW",5,6))


# Calcular os Pontos_Prioridade usando o modelo
DadosTModelo$Pontos_Prioridade <-(
    0 + b * (Ho_Sem_Net +Ho_OS_Aberto +QTD_REINCIDENCIAS+QTD_DIAS_Lt_OS))/id_prioridade


TabelaOS=data.frame(TipoOS=c("LOS","LOW","INSTALACAO"))
TabelaOS$Pont_OS=ifelse(TabelaOS$TipoOS =="LOS",1,
          ifelse(TabelaOS$TipoOS =="LOW",5,6))

TabelaOS
##       TipoOS Pont_OS
## 1        LOS       1
## 2        LOW       5
## 3 INSTALACAO       6
attach(dados[,-4])
## The following objects are masked from DadosTModelo:
## 
##     Ho_OS_Aberto, Ho_Sem_Net, ID_CLIENTE, QTD_DIAS_Lt_OS
# Visualizar os resultados
head(DadosTModelo)
##   id_tipo_ordem_servico                       descricao id_prioridade
## 1                  3275 06.01 INFRA - AMPLIAÇÃO DE REDE             5
## 2                  3506    02.12 MIGRAÇÃO DE TECNOLOGIA             3
## 3                  3523    03.04 ENTREGA DE EQUIPAMENTO            10
## 4                  3526               04.02 VIABILIDADE             7
## 5                  3533   05.06 MUDANÇA DE TITULARIDADE             9
## 6                  3549      06.10 INFRA - ANÁLISE OTDR             7
##   ID_CLIENTE Ho_Sem_Net Ho_OS_Aberto QTD_REINCIDENCIAS QTD_DIAS_Lt_OS
## 1         66         79          172                15             37
## 2         37        112           36                 4             71
## 3         45         59           19                15             82
## 4         60         77          152                17             84
## 5         17         96          163                20             71
## 6         32         39           37                27             30
##   Pontos_Prioridade
## 1         195.48387
## 2         239.78495
## 3          56.45161
## 4         152.07373
## 5         125.44803
## 6          61.29032
# Carregue a biblioteca ggplot2
library(ggplot2)

QTD_OS=table(dados$TipoOS)
QTD_OS
## < table of extent 0 >
ResiduosML=lm(formula = DadosTModelo$id_prioridade ~ ., data = DadosTModelo[,-c(1, 2, 4)])


shapiro.test(rstandard(ResiduosML))
## 
##  Shapiro-Wilk normality test
## 
## data:  rstandard(ResiduosML)
## W = 0.95328, p-value = 0.003075
require(car)
## Carregando pacotes exigidos: car
## Warning: package 'car' was built under R version 4.3.1
## Carregando pacotes exigidos: carData
## Warning: package 'carData' was built under R version 4.3.1
## 
## Attaching package: 'car'
## 
## The following object is masked from 'package:dplyr':
## 
##     recode
## 
## The following object is masked from 'package:purrr':
## 
##     some
vif(ResiduosML)
##        Ho_Sem_Net      Ho_OS_Aberto QTD_REINCIDENCIAS    QTD_DIAS_Lt_OS 
##          1.122683          1.054280          1.014987          1.081070 
## Pontos_Prioridade 
##          1.120752
plot(ResiduosML, 1:4)

Testando=DadosTModelo[,-c(1, 2, 4)]

# Melhor modelo - valores dist cook

ResiduosML=ResiduosML=lm(formula = Testando$Pontos_Prioridade ~factor(Testando$id_prioridade)+Testando$Ho_Sem_Net+Testando$Ho_OS_Aberto+Testando$QTD_REINCIDENCIAS+Testando$QTD_DIAS_Lt_OS, data =Testando)

shapiro.test(rstandard(ResiduosML))
## 
##  Shapiro-Wilk normality test
## 
## data:  rstandard(ResiduosML)
## W = 0.76498, p-value = 1.504e-10
require(car)
vif(ResiduosML)
##                                    GVIF Df GVIF^(1/(2*Df))
## factor(Testando$id_prioridade) 1.527875  9        1.023828
## Testando$Ho_Sem_Net            1.127809  1        1.061984
## Testando$Ho_OS_Aberto          1.163485  1        1.078649
## Testando$QTD_REINCIDENCIAS     1.077247  1        1.037905
## Testando$QTD_DIAS_Lt_OS        1.292851  1        1.137036
plot(ResiduosML, 1:4)

ResiduosML2=ResiduosML=lm(formula = Testando$Pontos_Prioridade ~factor(Testando$id_prioridade)+Testando$Ho_Sem_Net+Testando$Ho_OS_Aberto+Testando$QTD_REINCIDENCIAS+Testando$QTD_DIAS_Lt_OS, data=Testando)


library(lmtest)
## Warning: package 'lmtest' was built under R version 4.3.1
## Carregando pacotes exigidos: zoo
## Warning: package 'zoo' was built under R version 4.3.1
## 
## Attaching package: 'zoo'
## 
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
shapiro.test(rstandard(ResiduosML2))
## 
##  Shapiro-Wilk normality test
## 
## data:  rstandard(ResiduosML2)
## W = 0.76498, p-value = 1.504e-10
vif(ResiduosML)
##                                    GVIF Df GVIF^(1/(2*Df))
## factor(Testando$id_prioridade) 1.527875  9        1.023828
## Testando$Ho_Sem_Net            1.127809  1        1.061984
## Testando$Ho_OS_Aberto          1.163485  1        1.078649
## Testando$QTD_REINCIDENCIAS     1.077247  1        1.037905
## Testando$QTD_DIAS_Lt_OS        1.292851  1        1.137036
bptest(ResiduosML2)
## 
##  studentized Breusch-Pagan test
## 
## data:  ResiduosML2
## BP = 41.659, df = 13, p-value = 7.445e-05
plot(ResiduosML2, 1:4)

Testando=Testando[-c(16,76,67),]
Testando=Testando[-c(10,29,31),]
Testando=Testando[-c(29,13,31),]
Testando=Testando[-c(25,13,29),]
Testando=Testando[-c(85,13,29),]



ResiduosML2=ResiduosML=lm(formula = Testando$Pontos_Prioridade ~factor(Testando$id_prioridade)+Testando$Ho_Sem_Net+Testando$Ho_OS_Aberto+Testando$QTD_REINCIDENCIAS+Testando$QTD_DIAS_Lt_OS, data=Testando)
k=summary(ResiduosML2)

shapiro.test(rstandard(ResiduosML2))
## 
##  Shapiro-Wilk normality test
## 
## data:  rstandard(ResiduosML2)
## W = 0.81797, p-value = 3.942e-08
plot(ResiduosML2, 1:4)

#install.packages("corrgram")
library(corrgram)
## Warning: package 'corrgram' was built under R version 4.3.2
corrgram(Testando,order = T,lower.panel = panel.shade,upper.panel = panel.pie)

Coeficientes do meu modelo

k$coefficients
##                                      Estimate  Std. Error    t value
## (Intercept)                       437.9780525 22.91855295  19.110197
## factor(Testando$id_prioridade)2  -260.9404806 30.86128915  -8.455268
## factor(Testando$id_prioridade)3  -365.4287619 21.32328207 -17.137548
## factor(Testando$id_prioridade)4  -423.8470861 27.10352800 -15.638078
## factor(Testando$id_prioridade)5  -460.3048531 22.06287578 -20.863321
## factor(Testando$id_prioridade)6  -484.3699247 21.96277715 -22.054129
## factor(Testando$id_prioridade)7  -507.3136281 22.91805274 -22.135983
## factor(Testando$id_prioridade)8  -496.7667475 22.41074630 -22.166453
## factor(Testando$id_prioridade)9  -541.3631323 22.84658208 -23.695585
## factor(Testando$id_prioridade)10 -523.8064469 24.20148055 -21.643570
## Testando$Ho_Sem_Net                 0.5713026  0.11409965   5.007050
## Testando$Ho_OS_Aberto               0.7331596  0.07799324   9.400297
## Testando$QTD_REINCIDENCIAS          0.8353605  0.49653248   1.682388
## Testando$QTD_DIAS_Lt_OS             0.9597236  0.17498808   5.484508
##                                      Pr(>|t|)
## (Intercept)                      3.386057e-27
## factor(Testando$id_prioridade)2  8.227713e-12
## factor(Testando$id_prioridade)3  8.622859e-25
## factor(Testando$id_prioridade)4  7.794700e-23
## factor(Testando$id_prioridade)5  3.445070e-29
## factor(Testando$id_prioridade)6  1.799028e-30
## factor(Testando$id_prioridade)7  1.475367e-30
## factor(Testando$id_prioridade)8  1.370565e-30
## factor(Testando$id_prioridade)9  3.750272e-32
## factor(Testando$id_prioridade)10 4.907924e-30
## Testando$Ho_Sem_Net              5.153389e-06
## Testando$Ho_OS_Aberto            2.106136e-13
## Testando$QTD_REINCIDENCIAS       9.769129e-02
## Testando$QTD_DIAS_Lt_OS          8.748173e-07
soma_nomes <- sum(dados$Ho_Sem_Net != 0)

soma_nomes
## [1] 88

#Teste 2

  ResiduosML=lm(DadosTModelo$id_prioridade~.,data = DadosTModelo[,-c(1,2,4)])
summary(ResiduosML)
## 
## Call:
## lm(formula = DadosTModelo$id_prioridade ~ ., data = DadosTModelo[, 
##     -c(1, 2, 4)])
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.1698 -1.3446 -0.4478  1.1740  4.6585 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        4.879003   0.657508   7.420 9.70e-11 ***
## Ho_Sem_Net         0.009994   0.005413   1.846   0.0684 .  
## Ho_OS_Aberto       0.008542   0.003338   2.559   0.0123 *  
## QTD_REINCIDENCIAS  0.023545   0.023692   0.994   0.3232    
## QTD_DIAS_Lt_OS     0.022593   0.007672   2.945   0.0042 ** 
## Pontos_Prioridade -0.011488   0.001156  -9.942 9.71e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.746 on 82 degrees of freedom
## Multiple R-squared:  0.5568, Adjusted R-squared:  0.5298 
## F-statistic:  20.6 on 5 and 82 DF,  p-value: 2.859e-13
shapiro.test(rstandard(ResiduosML))
## 
##  Shapiro-Wilk normality test
## 
## data:  rstandard(ResiduosML)
## W = 0.95328, p-value = 0.003075