1. Dados

# Leitura dos dados com separador por espaço (qualquer espaço em branco)
dados <- read.table("C:/Users/joyha/OneDrive/Documentos/bioestatistica em r/dados_prova.txt", 
                    header = TRUE, sep = "", stringsAsFactors = FALSE)

# Visualizar estrutura inicial
str(dados)
## 'data.frame':    300 obs. of  5 variables:
##  $ deltaCt.gene1: num  8.62 9.38 7.99 17.3 8.48 ...
##  $ genot.gene1  : chr  "W/A" "W/W" "W/A" "W/W" ...
##  $ deltaCt.gene2: num  31.4 16.2 14.9 42.9 30 ...
##  $ genot.gene2  : chr  "A/A" "A/A" "W/W" "A/A" ...
##  $ covid.status : chr  "leve" "leve" "leve" "leve" ...
head(dados)
##   deltaCt.gene1 genot.gene1 deltaCt.gene2 genot.gene2 covid.status
## 1      8.620639         W/A      31.36700         A/A         leve
## 2      9.379503         W/W      16.23492         A/A         leve
## 3      7.993114         W/A      14.90623         W/W         leve
## 4     17.304381         W/W      42.87073         A/A         leve
## 5      8.477101         W/W      29.98350         A/A         leve
## 6      2.258466         A/A      17.65290         W/A      mod+sev

2. Conversão de Variáveis Numéricas

# Converter as colunas deltaCt para numérico
dados$deltaCt.gene1 <- as.numeric(dados$deltaCt.gene1)
dados$deltaCt.gene2 <- as.numeric(dados$deltaCt.gene2)

# Conferir resumos
summary(dados$deltaCt.gene1)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  -1.643   8.259  10.981  10.671  13.326  20.978
summary(dados$deltaCt.gene2)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   -4.85   27.12   36.13   36.21   46.30   87.19

3. Verificação de Normalidade (Shapiro-Wilk)

shapiro.test(dados$deltaCt.gene1)
## 
##  Shapiro-Wilk normality test
## 
## data:  dados$deltaCt.gene1
## W = 0.99357, p-value = 0.2305
shapiro.test(dados$deltaCt.gene2)
## 
##  Shapiro-Wilk normality test
## 
## data:  dados$deltaCt.gene2
## W = 0.99652, p-value = 0.7589

4. Comparação de Expressão por Status de COVID

# Teste t de Student
t_gene1 <- t.test(deltaCt.gene1 ~ covid.status, data = dados)
t_gene2 <- t.test(deltaCt.gene2 ~ covid.status, data = dados)

t_gene1
## 
##  Welch Two Sample t-test
## 
## data:  deltaCt.gene1 by covid.status
## t = 0.24013, df = 201.97, p-value = 0.8105
## alternative hypothesis: true difference in means between group leve and group mod+sev is not equal to 0
## 95 percent confidence interval:
##  -0.9041298  1.1548814
## sample estimates:
##    mean in group leve mean in group mod+sev 
##              10.71964              10.59426
t_gene2
## 
##  Welch Two Sample t-test
## 
## data:  deltaCt.gene2 by covid.status
## t = -2.661, df = 204.58, p-value = 0.008408
## alternative hypothesis: true difference in means between group leve and group mod+sev is not equal to 0
## 95 percent confidence interval:
##  -8.375305 -1.246390
## sample estimates:
##    mean in group leve mean in group mod+sev 
##              34.33399              39.14484

5. Boxplots de Expressão por Status

p1 <- ggplot(dados, aes(x = covid.status, y = deltaCt.gene1, fill = covid.status)) +
  geom_boxplot() +
  labs(title = "Expressão do Gene 1 por Status COVID", y = "deltaCt.gene1")

p2 <- ggplot(dados, aes(x = covid.status, y = deltaCt.gene2, fill = covid.status)) +
  geom_boxplot() +
  labs(title = "Expressão do Gene 2 por Status COVID", y = "deltaCt.gene2")

ggarrange(p1, p2, ncol = 2)

6. Diferença de Expressão por Genótipo (Kruskal-Wallis)

kruskal.test(deltaCt.gene1 ~ genot.gene1, data = dados)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  deltaCt.gene1 by genot.gene1
## Kruskal-Wallis chi-squared = 34.009, df = 2, p-value = 4.122e-08
kruskal.test(deltaCt.gene2 ~ genot.gene2, data = dados)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  deltaCt.gene2 by genot.gene2
## Kruskal-Wallis chi-squared = 1.1341, df = 2, p-value = 0.5672

7. Boxplots por Genótipo

ggplot(dados, aes(x = genot.gene1, y = deltaCt.gene1, fill = genot.gene1)) +
  geom_boxplot() +
  labs(title = "Gene 1: Expressão por Genótipo")

ggplot(dados, aes(x = genot.gene2, y = deltaCt.gene2, fill = genot.gene2)) +
  geom_boxplot() +
  labs(title = "Gene 2: Expressão por Genótipo")

8. Associação entre Genótipo e Status COVID (Qui-Quadrado)

chisq.test(table(dados$genot.gene1, dados$covid.status))
## 
##  Pearson's Chi-squared test
## 
## data:  table(dados$genot.gene1, dados$covid.status)
## X-squared = 37.971, df = 2, p-value = 5.685e-09
chisq.test(table(dados$genot.gene2, dados$covid.status))
## 
##  Pearson's Chi-squared test
## 
## data:  table(dados$genot.gene2, dados$covid.status)
## X-squared = 0.81601, df = 2, p-value = 0.665

9. Gráficos de Barras Proporcionais

ggplot(dados, aes(x = genot.gene1, fill = covid.status)) +
  geom_bar(position = "fill") +
  labs(title = "Proporção Status COVID por Genótipo Gene 1", y = "Proporção") +
  theme_minimal()

ggplot(dados, aes(x = genot.gene2, fill = covid.status)) +
  geom_bar(position = "fill") +
  labs(title = "Proporção Status COVID por Genótipo Gene 2", y = "Proporção") +
  theme_minimal()

10. Correlação entre Genes

cor.test(dados$deltaCt.gene1, dados$deltaCt.gene2, method = "pearson")
## 
##  Pearson's product-moment correlation
## 
## data:  dados$deltaCt.gene1 and dados$deltaCt.gene2
## t = 21.898, df = 298, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.7376909 0.8251842
## sample estimates:
##      cor 
## 0.785328

11. Modelo Linear Geral

modelo_geral <- lm(deltaCt.gene2 ~ deltaCt.gene1, data = dados)
summary(modelo_geral)
## 
## Call:
## lm(formula = deltaCt.gene2 ~ deltaCt.gene1, data = dados)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -26.464  -6.517  -0.164   5.887  27.073 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     6.7135     1.4455   4.645 5.12e-06 ***
## deltaCt.gene1   2.7643     0.1262  21.898  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.083 on 298 degrees of freedom
## Multiple R-squared:  0.6167, Adjusted R-squared:  0.6155 
## F-statistic: 479.5 on 1 and 298 DF,  p-value: < 2.2e-16

12. Modelos Lineares por Status de COVID

modelo_leve <- lm(deltaCt.gene2 ~ deltaCt.gene1, data = subset(dados, covid.status == "leve"))
modelo_modsev <- lm(deltaCt.gene2 ~ deltaCt.gene1, data = subset(dados, covid.status == "mod+sev"))

summary(modelo_leve)
## 
## Call:
## lm(formula = deltaCt.gene2 ~ deltaCt.gene1, data = subset(dados, 
##     covid.status == "leve"))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -24.9572  -5.9452  -0.4909   6.5513  20.2700 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     6.3925     1.9743   3.238  0.00143 ** 
## deltaCt.gene1   2.6066     0.1741  14.968  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 8.694 on 181 degrees of freedom
## Multiple R-squared:  0.5531, Adjusted R-squared:  0.5507 
## F-statistic:   224 on 1 and 181 DF,  p-value: < 2.2e-16
summary(modelo_modsev)
## 
## Call:
## lm(formula = deltaCt.gene2 ~ deltaCt.gene1, data = subset(dados, 
##     covid.status == "mod+sev"))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -20.0563  -7.1638  -0.1256   5.7379  23.5880 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     8.1259     1.9712   4.122 7.11e-05 ***
## deltaCt.gene1   2.9279     0.1695  17.269  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 8.784 on 115 degrees of freedom
## Multiple R-squared:  0.7217, Adjusted R-squared:  0.7193 
## F-statistic: 298.2 on 1 and 115 DF,  p-value: < 2.2e-16

13. Gráfico dos Modelos por Status

ggplot(dados, aes(x = deltaCt.gene1, y = deltaCt.gene2, color = covid.status)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  labs(title = "Modelos Lineares por Status COVID",
       x = "deltaCt.gene1", y = "deltaCt.gene2") +
  theme_minimal()