[R-br] Ordenar matriz de parentesco pelo índice de parentesco

Walmes Zeviani walmeszeviani em gmail.com
Quinta Setembro 15 18:34:46 BRT 2011


Saudações amigRos,

Estou com um problema que é o de identificar os indivíduos sem parentesco
dentro de uma família. Basicamente ao construir a matriz de parentesco dos
indivíduos eu gostaria de selecionar a submatriz desta que apresentasse
valores iguais a zero fora da diagonal. Abaixo eu tenho o pedgree de duas
famílias do qual, por meio da kinship2::kinship() eu obtenho a matriz de
parentesco. Alguém teria alguma solução para o meu problema? Segue o CMR:

# dados
dados <- structure(list(FAMID = c(2L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L,
                          4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L,
                          4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L),
                        ID = c(2101L, 2201L,
                          2202L, 2302L, 2303L, 4101L, 4301L, 4302L, 4303L,
4501L, 4502L,
                          4506L, 4601L, 4801L, 4802L, 4803L, 4806L, 4901L,
4902L, 4903L,
                          4904L, 4905L, 4906L, 4907L, 4908L, 4909L, 4910L,
4911L, 4912L,
                          4913L, 4914L, 4915L, 4916L, 4917L, 4918L, 4919L),
                        FA = c(0L,
                          0L, 0L, 2101L, 2101L, 4501L, 4201L, 4201L, 4201L,
4922L, 4921L,
                          0L, 4501L, 4921L, 4921L, 4921L, 4922L, 4924L,
4924L, 4803L, 4806L,
                          4806L, 4924L, 4806L, 4909L, 0L, 4924L, 0L, 4924L,
4924L, 4926L,
                          4925L, 4918L, 4918L, 0L, 4806L),
                        MO = c(0L, 0L, 0L, 2201L, 2201L,
                          4502L, 4101L, 4101L, 4101L, 4923L, 4506L, 0L,
4502L, 4506L, 4506L,
                          4506L, 4923L, 4911L, 4911L, 4910L, 4920L, 4920L,
4911L, 4920L,
                          4801L, 0L, 4911L, 0L, 4911L, 4911L, 4906L, 4913L,
4908L, 4908L,
                          0L, 4920L)),
                   .Names = c("FAMID", "ID", "FA", "MO"), class =
"data.frame",
                   row.names = c(NA, -36L))

# FAMID: id da familia
# ID: id único de cada indivíduo
# FA e MO: indica quem o pai(father) e mãe(mother) do indivíduo
# valor 0 indica genitor desconhecido

# criando lista em que cada familia é um slot da lista
fam <- split(dados, dados$FAMID)
str(fam)

require(kinship2)

# obter a matriz de parentesco
m0 <- with(fam[[1]], kinship(ID, FA, MO))
str(m0)
m1 <- as.matrix(m0)

# matriz de parentesco, verificar linhas/colunas de zeros, sem parentesco
# objeto de desejo: indivíduos de uma família que tenham sub-matriz de
parentesco
# com elementos fora da diagonal iguais a zero
# na m1 é a submatrix 3x3
m1[1:3, 1:3]

# os indivíduos são
rownames(m1[1:3, 1:3])

m0 <- with(fam[[2]], kinship(ID, FA, MO))
str(m0)
m1 <- as.matrix(m0)
m1

# essa matriz é enorme os não aparentados (no mínimo 4) não formam uma
# submatriz agrupada
# gostaria de ordenar essa matriz baseada nos elementos fora da diagonal
# começando com os sem parentesco (parentesco=0), passando pelas
# relações de primos/sobrinhos/netos (<0.25), e terminando com os
# irmãos germanos (=0.25), seria possivel reordenar esse matriz assim?

# uma forma de ordenar os não aparentados é deixar no início do pedgree
# aqueles que tem genitor desconhecido
aux <- fam[[2]]
aux <- aux[order(aux$FA, aux$MO),]
head(aux)
m0 <- with(aux, kinship(ID, FA, MO))
str(m0)
m1 <- as.matrix(m0)
m1[1:4, 1:4]

# mas será que é garantido que indivíduos não aparentados só serão aqueles
# que possuem genitor desconhecido no pedgree?
# e se eu quisesse o sub-grupo de indivíduos em que nenhum parentesco exceda
# 0.05?

Grato.
Walmes.


==========================================================================
Walmes Marques Zeviani
LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W)
Departamento de Estatística - Universidade Federal do Paraná
fone: (+55) 41 3361 3573
VoIP: (3361 3600) 1053 1173
e-mail: walmes em ufpr.br
twitter: @walmeszeviani
homepage: http://www.leg.ufpr.br/~walmes
linux user number: 531218
==========================================================================
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20110915/5e23c461/attachment.html>


Mais detalhes sobre a lista de discussão R-br