macierz modelu nie ma pełnej rangi: jest to klasyczne pytanie, z którym boryka się biolog bez jasnego zrozumienia projektu modelu

Dec 18 2020

Widziałem tę odpowiedź biostar . Próbowałem utworzyć moje metadane jako takie, ale nadal

"Error in checkFullRank(modelMatrix) : "

To jest moja coldata

dput(coldata)
structure(list(Group = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 
6L, 6L, 6L, 6L), .Label = c("HSC", "Blast", "CMP", "GMP", "LSC", 
"Mono"), class = "factor"), Mutation = structure(c(10L, 4L, 3L, 
5L, 2L, 3L, 9L, 11L, 1L, 1L, 7L, 7L, 10L, 7L, 8L, 2L, 10L, 10L, 
10L, 10L, 2L, 2L, 7L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 2L, 2L, 5L, 2L, 
9L, 1L, 1L, 8L, 6L, 6L, 6L, 6L, 6L, 6L), .Label = c("DNMT3A-R882H", 
"FLT3-ITD", "IDH2-R140Q", "KRAS-G13D", "MAU2-Q98H", "No", "NPM1-L287ins(TCTG)", 
"NRAS-G13D", "STAG2-R614", "TET2-E1357", "TET2-R550"), class = "factor"), 
    Satus = structure(c(2L, 5L, 4L, 6L, 3L, 4L, 9L, 10L, 1L, 
    1L, 7L, 7L, 2L, 7L, 8L, 3L, 2L, 2L, 2L, 2L, 3L, 3L, 7L, 16L, 
    16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 
    16L, 16L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 12L, 12L, 13L, 
    12L, 9L, 11L, 11L, 14L, 15L, 15L, 15L, 15L, 15L, 15L), .Label = c("Blast-DNMT3A-R882H", 
    "Blast-E1357", "Blast-FLT-ITD", "Blast-IDH2-R140Q", "Blast-KRAS-G13D", 
    "Blast-MAU2-Q98H", "Blast-NPM1-L287ins(TCTG)", "Blast-NRAS-G13D", 
    "Blast-STAG2-R614", "Blast-TET2-R550", "LSC-FLT-DNMT3A-R882H", 
    "LSC-FLT-ITD", "LSC-MAU2-Q98H", "LSC-NRAS-G13D", "Mature-Normal", 
    "Progenitor-Normal", "Stem-Normal"), class = "factor")), row.names = c("Blast1", 
"Blast10", "Blast11", "Blast12", "Blast13", "Blast14", "Blast15", 
"Blast16", "Blast17", "Blast18", "Blast19", "Blast20", "Blast2", 
"Blast21", "Blast22", "Blast23", "Blast3", "Blast4", "Blast5", 
"Blast6", "Blast7", "Blast8", "Blast9", "CMP1", "CMP2", "CMP3", 
"CMP4", "CMP5", "CMP6", "CMP7", "CMP8", "GMP1", "GMP2", "GMP3", 
"GMP4", "GMP5", "GMP6", "GMP7", "HSC1", "HSC2", "HSC3", "HSC4", 
"HSC5", "HSC6", "HSC7", "LSC1", "LSC2", "LSC3", "LSC4", "LSC5", 
"LSC6", "LSC7", "LSC8", "Mono1", "Mono2", "Mono3", "Mono4", "Mono5", 
"Mono6"), class = "data.frame")

dds <- DESeqDataSetFromMatrix(countData=df2, colData=coldata, design= ~ Group + Mutation)

To jest projekt, który próbuję wprowadzić. Otrzymuję to, że mój projekt jest zagnieżdżony w jednej z kolumn, patrząc na liczne przykłady.

Co chciałbym zrobić, to próbuję uruchomić test LRT na tym zestawie danych, który działa dobrze, jeśli podam Groupjako projekt „ ”, a następnie uruchomię to

dds_lrt <- DESeq(dds, test="LRT", reduced = ~ 1)

co daje mi diffrenitaly wyrażone w wielu grupach. Teraz są dwa pytania

  1. Czy można uwzględnić interakcję taką jak w moim przypadku Group+Mutationi wykonać test lrt?
  2. Czy powyższe jest koncepcyjnie błędne?

Odpowiedzi

3 ATpoint Dec 18 2020 at 18:24
> table(doldat$Group, coldat$Mutation)
       
        DNMT3A-R882H FLT3-ITD IDH2-R140Q KRAS-G13D MAU2-Q98H No NPM1-L287ins(TCTG) NRAS-G13D STAG2-R614 TET2-E1357 TET2-R550
  HSC              0        0          0         0         0  7                  0         0          0          0         0
  Blast            2        4          2         1         1  0                  4         1          1          6         1
  CMP              0        0          0         0         0  8                  0         0          0          0         0
  GMP              0        0          0         0         0  7                  0         0          0          0         0
  LSC              2        3          0         0         1  0                  0         1          1          0         0
  Mono             0        0          0         0         0  6                  0         0          0          0         0

Spójrz na tę tabelę, widzisz naocznie, jak niektóre mutacje są zagnieżdżone w Group. Jeśli chcesz to uwzględnić, musisz podzielić eksperyment na wiele oddzielnych serii, w zależności od pytania, na które chcesz odpowiedzieć.