Ordenar matriz de parentesco pelo índice de parentesco

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@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================
participantes (1)
-
Walmes Zeviani