Instruções iniciais

library(car)
library(dplyr)
library(purrr)

Poderá beneficiar da consulta das seguintes cheatsheets:

Consultar os dados

Execute os seguintes comandos para consultar os dados:

meta_cachexia = read.table("http://darwin.di.uminho.pt/dataAnalysisR/meta_cachexia.csv", sep = ",", header = T, row.names = 1)
cachexia = read.table("http://darwin.di.uminho.pt/dataAnalysisR/cachexia.csv", sep = ",", header = T, row.names = 1)
cachexia = cbind(cachexia, meta_cachexia)

Pergunta 1

  1. O que faz a linha abaixo?
cachexia.log = cachexia %>% select(-Muscle.loss) %>% log2 %>% mutate(meta_cachexia)
  1. O que se pretende com o código apresentado nas linhas abaixo?
  2. O que consegue concluir após a sua execução?
  3. Quais são os pressupostos teóricos que não foram acautelados?
  4. Escreva uma versão do código que resolve os problemas encontrados.
pv.orig = cachexia %>% select(-Muscle.loss) %>% map(~ shapiro.test(.x)$p.value) %>% unlist
sum(pv.orig < 0.05)
pv.log = cachexia.log %>% select(-Muscle.loss) %>% map(~ shapiro.test(.x)$p.value) %>% unlist
sum(pv.log < 0.05)
colnames(cachexia.log)[which(pv.log < 0.05)]

Pergunta 2

Considere o seguinte código:

genes = cachexia %>% select(-Muscle.loss)
pvs = genes %>% map_dbl(~ pairwise.t.test(.x, g = cachexia$Muscle.loss)$p.value)
names(pvs) = names(genes)
pvs = pvs[pvs < 0.05]
pvs = pvs[order(pvs)]
length(pvs)
names(pvs)
  1. O que se pretende obter com este código?
  2. Que vulnerabilidades encontra no código anterior?
  3. Sugira que alterações deve fazer ao código para corrigir as vulnerabilidades.
  4. Se corrigir os problemas encontrados no código, o que muda nos resultados e porquê?

Pergunta 3

Considere o código dado a seguir:

rank = names(pvs)[1:10]

C = round(cor(cachexia[,rank]), 2)
gene.names = C %>% rownames
which(C > 0.7, arr.ind = TRUE) %>% as_tibble %>% filter(row != col) %>% apply(2, function(x) gene.names[x])
heatmap(C, col = hcl.colors(20, palette = "viridis"))
  1. O que faz este código? Explique detalhadamente como ele funciona.
  2. Que conclusões tira da sua execução?

Pergunta 4

Considere o seguinte código:

lm1= lm(Leucine ~ Valine, data = cachexia)
lm2= lm(Leucine ~ Valine + X3.Hydroxybutyrate, data = cachexia)
lm3= lm(Leucine ~ Valine * X3.Hydroxybutyrate, data = cachexia)

for(Fit in list(lm1, lm2, lm3)) {
  Fit %>% plot(which = 2)
  print("Residuos")
  residuos = Fit %>% residuals 
  print(residuos %>% summary)
  residuos %>% hist(breaks = 20, prob = T)
  residuos %>% density %>% lines
  print(Fit %>% summary)
}
  1. O que faz este código?
  2. O que consegue concluir após analisar os resíduos dos erros?
  3. De que outra forma pode descobrir o que lhe interessa saber sobre os resíduos?
  4. Quais dos modelos poderão não ter intercept? Como pode ter a certeza disso?
  5. No caso dos modelos que não tinham intercept, o que conclui quando o tira?
  6. Como poderia investigar se o grupo de pacientes (control ou cachexic) afeta a concentração de Leucine em conjunto com a Valine? A que conclusões chega?

Pergunta 5

  1. Após toda a análise efetuada, qual é o modelo que lhe parece o melhor para prever a concentração de Leucine?
  2. Será que este modelo tem algum outlier que deveria remover?
  1. Escreva o código que lhe permita verificar se há outliers;
  2. Verifique se eles influenciam a criação do modelo;
  3. Caso isso seja verdade, retire-os e volte a ajustar; o que melhorou?

Inquérito

No final da sessão, preecha o inquérito aqui