Observações

Na ausĂªncia dos stepstests:

1 - Filtrar dados com PID manual do treinamento dos modelos;

2 - Trabalhar com SP, sempre que possĂ­vel, ou tentar uma transformaĂ§Ă£o.

Quantidade de dados por tipo de cimento

## 
##   2   3   6 
## 669  75 176
nomes_X_SP = c(
'Velocidade do Classificador (SP)',  # Inversor
'Damper 01 (SP)', #damper
"PressĂ£o de entrada do moinho (SP)", #PID ### Se automĂ¡tico IA pode funcionar ou nĂ£o
'AlimentaĂ§Ă£o Total (SP)', ### balança
"Temperatura de saĂ­da (SP)",  #PID
"PressĂ£o grade (SP)",  ### unidade hidr
'InjeĂ§Ă£o de Ă¡gua (SP)' ### inversor
)

# PV vs SP

# Inversor: erro prĂ³ximo de 0
# Damper: erro até 3%
# PID: erro depende do processo e PID (filtrar no treinamento dos modelos).
# Balança: erro depende da umidade e erro da propria balança
# Unidade Hidraulica: Erro aproximadamente 0.3 Mpa.

nomes_X_PV = c(
  'Velocidade do Classificador (PV)',
'Damper 01 (PV)', 
"PressĂ£o de entrada do moinho (PV)",
'AlimentaĂ§Ă£o Total (PV)',
"Temperatura de saĂ­da (PV)",
"PressĂ£o grade (PV)",
'InjeĂ§Ă£o de Ă¡gua (PV)'
)


tag_X_PV = c('CM2_PV_CLA01_SPEED',
'CM2_PV_DA01_POSITION',     
"CM2_PV_VRM01_IN_PRESS",
'CM2_PV_RB01_TOTAL_FEED',
"CM2_PV_VRM01_OUTLET_TEMPERATURE",
"CM2_PV_HYS01_PRESSURE",
'CM2_PV_WI01_WATER_INJECTION'
)



tag_X_SP = c('CM2_SP_CLA01_SPEED',
'CM2_SP_DA01_POSITION',    
'CM2_SP_PRESS_AUTO',
'CM2_SP_RB01_TOTAL_FEED',
'CM2_SP_VRM01_TEMP_AUTO',
"CM2_SP_VRM01_PRESS_GRIDING_1_3",
'CM2_SP_WI01_WATER_INJECTION'
)

Velocidade do classificador

Por se tratar de um inversor, nĂ£o existe diferença entre PV e SP.

## [1] "Dados filtrados"

## 
## Call:
## lm(formula = y ~ x, data = dados)
## 
## Coefficients:
## (Intercept)            x  
##   5.663e-12    1.000e+00

Damper 01

Damper: erro até 3%.

i=2


B1_SPS = df_type[ which(names(df_type) == tag_X_SP[i])]
B1_PVS = df_type[ which(names(df_type) == tag_X_PV[i])]






dados = na.omit(cbind(B1_PVS[1],B1_SPS[1]))



dados = na.omit(cbind(dados[1],dados[2]))

print("Dados filtrados")
## [1] "Dados filtrados"
dados$index = seq(1,nrow(dados))
 
names(dados) = c("y", "x")
dados$index = seq(1,nrow(dados))
 
ggplot(dados, aes(index)) + 
  geom_line(aes(y = x, colour = "PV")) + 
  geom_line(aes(y = y, colour = "SP"))+
labs(y= nomes_X_PV[i] ,x= nomes_X_SP[i])

ggplot(dados, aes(x = x, y = y)) + 
  geom_point() + 
theme_minimal() +
labs(y= nomes_X_PV[i] ,x= nomes_X_SP[i])

model = lm(dados[,1] ~ dados[,2])


lm(dados,formula= y ~x)
## 
## Call:
## lm(formula = y ~ x, data = dados)
## 
## Coefficients:
## (Intercept)            x  
##      2.6484       0.9588

Erro do Damper 01 em porcentagem

e100 = abs((dados[,1] - dados[,2])/dados[,1])*100

dados$e100 = e100

ggplot(dados, aes( y = e100, x = index)) + 
  geom_point() + 
theme_minimal() +
labs(y= "Erro em porcentagem" ,x= nomes_X_SP[i])

PressĂ£o de entrada do moinho (PID)

O erro depende do processo e do PID em questĂ£o. Deve-se filtrar os dados para usar o PID ativo no treinamento dos modelos.

i=3


B1_SPS = df_type[ which(names(df_type) == tag_X_SP[i])]
B1_PVS = df_type[ which(names(df_type) == tag_X_PV[i])]






dados = na.omit(cbind(B1_PVS[1],B1_SPS[1]))



dados = na.omit(cbind(dados[1],dados[2]))


print("Dados filtrados")
## [1] "Dados filtrados"
dados$index = seq(1,nrow(dados))
 
names(dados) = c("y", "x")
dados$index = seq(1,nrow(dados))
 
ggplot(dados, aes(index)) + 
  geom_line(aes(y = x, colour = "PV")) + 
  geom_line(aes(y = y, colour = "SP"))+
labs(y= nomes_X_PV[i] ,x= nomes_X_SP[i])

ggplot(dados, aes(x = x, y = y)) + 
  geom_point() + 
theme_minimal() +
labs(y= nomes_X_PV[i] ,x= nomes_X_SP[i])

model = lm(dados[,1] ~ dados[,2])


lm(dados,formula= y ~x)
## 
## Call:
## lm(formula = y ~ x, data = dados)
## 
## Coefficients:
## (Intercept)            x  
##     -1.6478       0.7024

Erro do Damper 01 em porcentagem

e100 = abs((dados[,1] - dados[,2])/dados[,1])*100

dados$e100 = e100

ggplot(dados, aes( y = e100, x = index)) + 
  geom_point() + 
theme_minimal() +
labs(y= "Erro em porcentagem" ,x= nomes_X_SP[i])

RegressĂ£o linear

ggplot(dados, aes(index)) + 
  geom_line(aes(y = x, colour = "SP")) + 
  geom_line(aes(y = y, colour = "PV"))

lm(dados,formula= y ~x)
## 
## Call:
## lm(formula = y ~ x, data = dados)
## 
## Coefficients:
## (Intercept)            x  
##     -1.6478       0.7024

AlimentaĂ§Ă£o Total

i=4

B1_SPS = df_type[ which(names(df_type) == tag_X_SP[i])]
B1_PVS = df_type[ which(names(df_type) == tag_X_PV[i])]


plot(B1_SPS[,1],B1_PVS[,1], ylab=nomes_X_PV[i] , xlab=nomes_X_SP[i] )

dados = na.omit(cbind(B1_PVS[1],B1_SPS[1]))



dados[1][dados[1] < 40]= NA
dados[1][dados[1] > 200]= NA
dados[2][dados[2] < 40]= NA
dados[2][dados[2] > 200]= NA

dados = na.omit(cbind(dados[1],dados[2]))

print("Dados filtrados")
## [1] "Dados filtrados"
dados$index = seq(1,nrow(dados))
 
names(dados) = c("y", "x")
dados$index = seq(1,nrow(dados))
 
ggplot(dados, aes(index)) + 
  geom_line(aes(y = x, colour = "PV")) + 
  geom_line(aes(y = y, colour = "SP"))+
labs(y= nomes_X_PV[i] ,x= nomes_X_SP[i])

ggplot(dados, aes(x = x, y = y)) + 
  geom_point() + 
theme_minimal() +
labs(y= nomes_X_PV[i] ,x= nomes_X_SP[i])

model = lm(dados[,1] ~ dados[,2])


lm(dados,formula= y ~x)
## 
## Call:
## lm(formula = y ~ x, data = dados)
## 
## Coefficients:
## (Intercept)            x  
##     12.6197       0.8213

Erro em porcentagem

e100 = abs((dados[,1] - dados[,2])/dados[,1])*100

dados$e100 = e100

ggplot(dados, aes( y = e100, x = index)) + 
  geom_point() + 
theme_minimal() +
labs(y= "Erro em porcentagem" ,x= nomes_X_SP[i])

Temperatura de saĂ­da

i=5

B1_SPS = df_type[ which(names(df_type) == tag_X_SP[i])]
B1_PVS = df_type[ which(names(df_type) == tag_X_PV[i])]



plot(B1_SPS[,1],B1_PVS[,1], ylab=nomes_X_PV[i] , xlab=nomes_X_SP[i] )

dados = na.omit(cbind(B1_PVS[1],B1_SPS[1]))



dados[1][dados[1] < 40]= NA
dados[1][dados[1] > 200]= NA
dados[2][dados[2] < 40]= NA
dados[2][dados[2] > 200]= NA

dados = na.omit(cbind(dados[1],dados[2]))

print("Dados filtrados")
## [1] "Dados filtrados"
dados$index = seq(1,nrow(dados))
 
names(dados) = c("y", "x")
dados$index = seq(1,nrow(dados))
 
ggplot(dados, aes(index)) + 
  geom_line(aes(y = x, colour = "PV")) + 
  geom_line(aes(y = y, colour = "SP"))+
labs(y= nomes_X_PV[i] ,x= nomes_X_SP[i])

ggplot(dados, aes(x = x, y = y)) + 
  geom_point() + 
theme_minimal() +
labs(y= nomes_X_PV[i] ,x= nomes_X_SP[i])

model = lm(dados[,1] ~ dados[,2])


lm(dados,formula= y ~x)
## 
## Call:
## lm(formula = y ~ x, data = dados)
## 
## Coefficients:
## (Intercept)            x  
##      -11.72         1.12

Erro em porcentagem

e100 = abs((dados[,1] - dados[,2])/dados[,1])*100

dados$e100 = e100

ggplot(dados, aes( y = e100, x = index)) + 
  geom_point() + 
theme_minimal() +
labs(y= "Erro em porcentagem" ,x= nomes_X_SP[i])

InjeĂ§Ă£o

i=6

B1_SPS = df_type[ which(names(df_type) == tag_X_SP[i])]
B1_PVS = df_type[ which(names(df_type) == tag_X_PV[i])]



plot(B1_SPS[,1],B1_PVS[,1], ylab=nomes_X_PV[i] , xlab=nomes_X_SP[i] )

dados = na.omit(cbind(B1_PVS[1],B1_SPS[1]))




dados = na.omit(cbind(dados[1],dados[2]))

print("Dados filtrados")
## [1] "Dados filtrados"
dados$index = seq(1,nrow(dados))
 
names(dados) = c("y", "x")
dados$index = seq(1,nrow(dados))
 
ggplot(dados, aes(index)) + 
  geom_line(aes(y = x, colour = "PV")) + 
  geom_line(aes(y = y, colour = "SP"))+
labs(y= nomes_X_PV[i] ,x= nomes_X_SP[i])

ggplot(dados, aes(x = x, y = y)) + 
  geom_point() + 
theme_minimal() +
labs(y= nomes_X_PV[i] ,x= nomes_X_SP[i])

model = lm(dados[,1] ~ dados[,2])


lm(dados,formula= y ~x)
## 
## Call:
## lm(formula = y ~ x, data = dados)
## 
## Coefficients:
## (Intercept)            x  
##      1.0964       0.8064

Erro em porcentagem

e100 = abs((dados[,1] - dados[,2])/dados[,1])*100

dados$e100 = e100

ggplot(dados, aes( y = e100, x = index)) + 
  geom_point() + 
theme_minimal() +
labs(y= "Erro em porcentagem" ,x= nomes_X_SP[i])