Código
#install.packages("shinythemes")
library(readxl)
library(dplyr)
#getwd()
library(knitr)
Primeiramente vamos carregar algumas bibliotecas que usaremos em nossas análises.
A biblioteca readxl Wickham e Bryan (2023) para ler o conjunto de dados do excel.
A biblioteca dplyr Wickham et al. (2023) para algumas manipulações no conjunto de dados.
A biblioteca knitr Xie (2023) para manipulações com latex e afins.
A biblioteca ggplot2 Wickham (2016) para geração de gráficos.
#install.packages("shinythemes")
library(readxl)
library(dplyr)
#getwd()
library(knitr)Carregando o banco de dados referente a produção de leite de 3 vacas em uma fazenda
#teste<-read.table("C:/Users/joseferson/Documents/joseferson barreto/projeto-final-planejamento2/psubDBC.txt")
dados <- read_excel("dados.xlsx")
dados<- dados[-1]
library(knitr)
kable(head(dados, 10))| racao_Comun | Turno | mes | pasta_bovin | soja | rep |
|---|---|---|---|---|---|
| 26 | dia | primeiro mês | 41 | 41 | 1 |
| 26 | tarde | primeiro mês | 41 | 41 | 1 |
| 33 | dia | primeiro mês | 37 | 39 | 1 |
| 25 | tarde | primeiro mês | 40 | 37 | 1 |
| 29 | dia | primeiro mês | 37 | 39 | 1 |
| 34 | tarde | primeiro mês | 36 | 40 | 1 |
| 28 | dia | primeiro mês | 36 | 38 | 1 |
| 27 | tarde | primeiro mês | 40 | 41 | 1 |
| 29 | dia | primeiro mês | 37 | 37 | 1 |
| 32 | tarde | primeiro mês | 39 | 43 | 1 |
#==================================================================================
# transformando os dados #
#==================================================================================
# Criar a nova variável "dia_mes"
dados <- dados %>%
group_by(mes) %>%
mutate(
dia_mes = rep(paste0("dia ", rep(1:30, each = 2)), length.out = n())
)
# Visualizar os dados resultantes
#print(dados)
# Criar a nova variável "dia_mes_com_mes"
dados <- dados %>%
mutate(dia_mes_com_mes = paste(dia_mes, mes, sep = " "))
# Criando vetores vazios para armazenar os dados e a identificação da variável
prod <- c()
variavel <- c()
# Número total de observações e de variáveis
num_observacoes <- 360
variaveis <- c("soja", "pasta_bovin", "racao_Comun")
num_variaveis <- length(variaveis)
# Loop para preencher as variáveis prod e variavel
for (i in 1:(num_observacoes/2)) {
# Iteração sobre as variáveis
for (j in 1:num_variaveis) {
# Adicionando duas observações da variável atual
prod <- c(prod, dados[[variaveis[j]]][((i - 1) * 2 + 1):(i * 2)])
# Adicionando a identificação da variável
variavel <- c(variavel, rep(variaveis[j], 2))
}
}
# # Verificando os resultados
# head(prod)
# head(variavel)
banco<-data.frame(prod=c(prod),turno=as.factor(c(dados$Turno,
dados$Turno,dados$Turno)),blocos=as.factor(c(dados$rep,
dados$rep,dados$rep))) #, dias = c(dados$dia_mes_com_mes,
# dados$dia_mes_com_mes,dados$dia_mes_com_mes))
banco$tipos_rações<-as.factor(c(variavel))
banco$prod<-as.numeric(banco$prod)Observação
para mais temas e costomisações confira a documentação da biblioteca shinythemes Chang (2021)
p<-banco |> select(tipos_rações,turno,blocos,prod)
banco <-p
banco1 <- banco
colnames(banco1)<-c("tipo rações","Turno","Bloco", 'prod')
#kable(head(banco1, 10))| tipo rações | Turno | Bloco | prod |
|---|---|---|---|
| soja | dia | 1 | 41 |
| soja | tarde | 1 | 41 |
| pasta_bovin | dia | 1 | 41 |
| pasta_bovin | tarde | 1 | 41 |
| racao_Comun | dia | 1 | 26 |
| racao_Comun | tarde | 1 | 26 |
| soja | dia | 1 | 39 |
| soja | tarde | 1 | 37 |
| pasta_bovin | dia | 1 | 37 |
| pasta_bovin | tarde | 1 | 40 |
Vamos fazer a análise exploratória,primeiramente vamos observar osn tipos de variáveis
#| label: fig-pressure
#| fig-cap: "Pressure"
#| code-fold: true
# converter a variável prod para númerica
banco$prod <- as.integer(banco$prod)
banco |> glimpse()Rows: 1,080
Columns: 4
$ tipos_rações <fct> soja, soja, pasta_bovin, pasta_bovin, racao_Comun, racao_…
$ turno <fct> dia, tarde, dia, tarde, dia, tarde, dia, tarde, dia, tard…
$ blocos <fct> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
$ prod <int> 41, 41, 41, 41, 26, 26, 39, 37, 37, 40, 33, 25, 39, 40, 3…
#| label: fig-pressure
#| fig-cap: "Pressure"
#| code-fold: true
# library(ggplot2)
#
# ggplot(data = banco, aes(x = turno,y = tipos_rações)) +
# geom_bar() +
# labs(title = "Distribuição da Variável Turno",
# x = "Turno",
# y = "Contagem")
#
#
#
# ggplot(data = banco, aes(x = turno, fill = tipos_rações)) +
# group_by(tipos_rações)+
# geom_bar(position = "stack") +
# labs(title = "Distribuição de Turno por Tipos de Rações",
# x = "Turno",
# y = "Contagem",
# fill = "Tipos de Rações")
#
#
#
#
#
#
#
#
# ggplot(data = banco, aes(x = turno, fill = tipos_rações)) +
# geom_bar(position = "stack") +
# labs(title = "Distribuição de Turno por Tipos de Rações",
# x = "Turno",
# y = "Contagem",
# fill = "Tipos de Rações")
#install.packages("moments",dependencies = TRUE)
library(moments)
descritiva <- banco %>%
summarise("Média produção" = sprintf("%.2f", round(mean(prod, na.rm = TRUE), 2)),
"Mediana produção" = sprintf("%.2f", round(median(prod, na.rm = TRUE), 2)),
"Assimétria" = sprintf("%.2f", round(skewness(prod, na.rm = TRUE), 2)),
"Curtose" = sprintf("%.2f", round(kurtosis(prod, na.rm = TRUE), 2)))
#============================================================================
# observação
#============================================================================
# A função sprintf("%.2f") formata a saida dos resultados para que os zeros após a virgula sejam exibidos
descritiva |> kable(align = "c")| Média produção | Mediana produção | Assimétria | Curtose |
|---|---|---|---|
| 24.50 | 28.00 | -0.28 | 1.67 |
Média
Mediana
Assimétria
Exemplos comuns de distribuições assimétricas à esquerda incluem distribuições de tempo de espera em uma fila, distribuições de tempo de vida de produtos.
Curtose
A Curtose é uma medida estatística que descreve a forma da distribuição de probabilidade de uma variável aleatória. Ela compara a distribuição de uma variável com a distribuição normal padrão. A curtose de uma distribuição normal padrão é definida como 3.
Se \(K >3\) a distribuição é mais “pontiaguda” e “pesada” nas caudas do que uma distribuição normal, e é chamada de leptocúrtica.
Se \(K < 3\) a distribuição é mais “achatada” do que uma distribuição normal, e é chamada de platicúrtica.
Se \(K = 3\) a distribuição é chamada de mesocúrtica e tem a mesma curtose da distribuição normal.
Logo, podemos afirmar que nossa siatribuição é mais achatada que a distribuição normal, oe seja , ela é platicúrtica.
Moda
A moda é lor que ocorre com mais frequência em uma distribuição de dados. Vamos utilizar o código abaixo para calcular a moda:
#| label: fig-pressure
#| fig-cap: "Pressure"
#| code-fold: true
banco |> select(prod) %>%
table() %>%
which.max () %>%
names () %>%
as.numeric()[1] 35
Note que a moda foi maior que a média e a mediana ou seja \(\text{Moda} > \text{Mediana} > \text{Média}\) isso indica que temos uma Assimétria negátiva como vimos anteriomente .
Logo, com essas características apresentadas pode-se dizer que nossa variável resposta não segue a distribução normal,vamos mostrar em um histograma
#| label: fig-pressure
#| fig-cap: "Pressure"
#| code-fold: true
#hist(banco$prod)
library(dplyr)
library(ggplot2)
banco_summary <- banco %>%
group_by(turno, tipos_rações) %>%
summarize(Contagem = n())
# ggplot(data = banco_summary, aes(x = turno, y = Contagem, fill = tipos_rações)) +
# geom_histogram(stat = "identity", position = "dodge") +
# geom_density(aes(color = tipos_rações), size = 1.5) + # Adiciona a curva da densidade
# labs(title = "Distribuição de Turno por Tipos de Rações",
# x = "Turno",
# y = "Contagem",
# fill = "Tipos de Rações",
# color = "Tipos de Rações") # Adiciona a legenda para a curva da densidade
# Assuming 'produção' is the variable representing production in your dataset
# Load necessary libraries
library(ggplot2)
# # Create a histogram of production with density curve
# ggplot(data = banco, aes(x = prod)) +
# geom_histogram(binwidth = 1, fill = "lightblue", color = "black", alpha = 0.7) + # Adjust binwidth and transparency
# geom_density(alpha = 0.8, fill = "#FF6500") + # Add density curve with color and transparency
# labs(title = "Histograma da Produção", x = "Produção", y = "Densidade") +
# theme_minimal()
# ggplot(data = banco, aes(x = prod))+
# geom_histogram() +
# geom_density(position = "identity")
# Calculate mean and standard deviation of your data
mean_value <- mean(banco$prod)
sd_value <- sd(banco$prod)
n <- nrow(banco) # Number of observations
lagura <- binwidth <-1 # Assuming you have defined binwidth earlier
autor <- "joseferson Barreto"
ano <-"2024"
# Create a histogram of production with density curve and normal curve
ggplot(data = banco, aes(x = prod)) +
geom_histogram(binwidth = binwidth, fill = "lightblue", color = "black", alpha = 0.7) +
geom_density(alpha = 0.3, fill = "#FFA500") +
stat_function(fun = function(x) dnorm(x, mean = mean_value, sd = sd_value) * n * lagura, color = "red", size = 1) +
labs(title = "Histograma da Produção com Curva Normal", x = "Produção", y = "Densidade", caption = paste("Fonte: Elaborada pelo Autor,", ano)) +
theme(panel.background = element_rect(fill='#a0a88a', colour='red'),
plot.caption = element_text(hjust = 0.5),
plot.title = element_text(hjust = 0.5))#shapiro.test(banco$prod)Como pode-se observar , a distribuição dos nossos dados apresenta um achatamento maior que da distribuição normal, logo , podemos afirmar que a variável prod não segue a distruição normal. outra forma de observar isso , é pelo teste de Shapiro Wilk Shapiro e Wilk (1965)
shapiro.test(banco$prod)
Shapiro-Wilk normality test
data: banco$prod
W = 0.9178, p-value < 2.2e-16
Como o \(P\_{valor} < \alpha = 0,05\) temos que nossa variável não segue a distribuição normal.