Tabela de contingência com três variáveis
2 participantes
Página 1 de 1
Tabela de contingência com três variáveis
Oi, pessoal!
Ontem no webnário o Felipe mandou um pergunta sobre a criação de tabelas de contingências para três variáveis.
O normal é termos uma tabela para apenas duas, uma vez que para termos três isto seria equivalente a uma espécie de tabela "3D".
Hoje resolvi pesquisar um pouco, e encontrei uma função que auxilia a pensar na associação entre três variáveis, a função ftable(). Segue um exemplo bem simples de uso:
Abraços!
Ontem no webnário o Felipe mandou um pergunta sobre a criação de tabelas de contingências para três variáveis.
O normal é termos uma tabela para apenas duas, uma vez que para termos três isto seria equivalente a uma espécie de tabela "3D".
Hoje resolvi pesquisar um pouco, e encontrei uma função que auxilia a pensar na associação entre três variáveis, a função ftable(). Segue um exemplo bem simples de uso:
- Código:
#Criando dados de exemplo, três variáveis categóricas:
dados<-structure(list(var1 = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L,
3L, 3L), .Label = c("a", "b", "c"), class = "factor"), var2 = structure(c(1L,
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), .Label = c("f", "g", "h"), class = "factor"),
var3 = structure(c(2L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 1L), .Label = c("r",
"z"), class = "factor")), .Names = c("var1", "var2", "var3"
), class = "data.frame", row.names = c(NA, -9L))
#Olhando os dados:
summary(dados)
#Criando a tabela:
tabela<-table(dados$var1, dados$var2, dados$var3)
#A tabela pode ser mostrada assim:
tabela
#Mas a função ftable ajuda a mostrar a tabela com três variáveis:
ftable(tabela)
Abraços!
Re: Tabela de contingência com três variáveis
Boa tarde Prof. Marcos e colegas. Era algo assim que estava pensando, quando fiz a pergunta. Vou pegar esse exemplo e estudar ele com mais calma. Mas de antemão, há alguma restrição quanto ao número de variáveis da função ftable e quanto a existência de NA nas colunas da variáveis?
Desde já agradeço.
Desde já agradeço.
lipegui- Mensagens : 12
Data de inscrição : 03/10/2017
Re: Tabela de contingência com três variáveis
Acredito que acumular mais variáveis possa ser bem complexo, pois o número de combinações pode ficar bem grande. Mas acho que é mais um limite da capacidade de interpretação do que um limite da função.
Sobre os NAs, acredito que não seja um problema, a maioria das funções do R consegue lidar com isso.
Qualquer coisa escreva aqui no tópico se sentir dificuldades ao aplicar na prática, ok?
Abraços!
Sobre os NAs, acredito que não seja um problema, a maioria das funções do R consegue lidar com isso.
Qualquer coisa escreva aqui no tópico se sentir dificuldades ao aplicar na prática, ok?
Abraços!
Re: Tabela de contingência com três variáveis
Boa noite prof. Marcos.
Dei uma sapiada no código que vc disponibilizou e, por curiosidade, apliquei ele num conjunto de dados que contempla mais de 3 variáveis qualitativas além de NA's.
Para ficar mais organizado, vou postar primeiro um código referente aos dados, já que ficou um pouco extenso, conforme um procedimento que vc explicou em um outro tópico. Segue abaixo:
Quando importei esses dados para o R, uma coisa que me chamou atenção é que para a coluna que continha dados numéricos, o próprio R colocou NA onde estava em branco. Nas demais colunas, que são categóricas, onde estava em branco o R deixou em branco mesmo. Eu não mexi em nada e rodei a parte do código que trata da confecção da tabela, conforme segue.
O código rodou mas acabou produzindo uma tabela com contagem numérica nas colunas para entrelinhas regular ou ruim em função das espécies e das condições das outras variáveis. Eu esperava que retornasse as espécies na primeira coluna e um valor de contagem nas demais colunas para, quem sabe, eu pudesse medir uma associação. Mas valeu, uma hora e gente acha um jeito rsrsrs.
Obrigado e bom fim de semana.
Dei uma sapiada no código que vc disponibilizou e, por curiosidade, apliquei ele num conjunto de dados que contempla mais de 3 variáveis qualitativas além de NA's.
Para ficar mais organizado, vou postar primeiro um código referente aos dados, já que ficou um pouco extenso, conforme um procedimento que vc explicou em um outro tópico. Segue abaixo:
- Código:
dados2<-structure(list(Área = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), Amostra = c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 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, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 6L), Nome = structure(c(4L, 3L, 26L, 4L,
6L, 8L, 6L, 23L, 27L, 8L, 1L, 6L, 18L, 11L, 18L, 4L, 11L, 19L,
8L, 21L, 8L, 8L, 8L, 24L, 8L, 8L, 13L, 26L, 24L, 6L, 11L, 6L,
8L, 29L, 8L, 8L, 8L, 23L, 10L, 6L, 6L, 8L, 1L, 8L, 8L, 6L, 8L,
18L, 2L, 6L, 2L, 21L, 10L, 1L, 2L, 2L, 21L, 23L, 2L, 8L, 21L,
19L, 19L, 12L, 21L, 3L, 17L, 21L, 8L, 17L, 8L, 16L, 3L, 9L, 3L,
22L, 3L, 19L, 11L, 8L, 13L, 22L, 7L, 13L, 19L, 13L, 7L, 24L,
8L, 13L, 14L, 8L, 26L, 8L, 25L, 11L, 8L, 4L, 5L, 8L, 8L, 11L,
6L, 26L, 6L, 15L, 11L, 20L, 4L, 8L, 5L, 6L, 11L, 11L, 6L, 28L,
11L, 6L, 11L), .Label = c("Algodão_da_praia", "Araticum", "Bordão_de_velho",
"Caboatã", "Cajazeira", "Cupiúba", "Embiriba", "Falha", "Favinha",
"Guanandi", "Ingá", "Ipê_amarelo", "Ipê_branco", "Ipê_roxo",
"Japaranduba", "Jenipapo", "Jitó", "Leiteiro", "Martelo", "Não_identificada",
"Oitizeiro", "Pau_ferro", "Pau_formiga", "Pitanga", "Praíba",
"Quiri", "Salgueiro", "Trapiá", "Visgueiro"), class = "factor"),
Spp = structure(c(4L, 3L, 26L, 4L, 6L, 8L, 6L, 22L, 27L,
8L, 1L, 6L, 18L, 13L, 18L, 4L, 13L, 19L, 8L, 21L, 8L, 8L,
8L, 25L, 8L, 8L, 12L, 26L, 25L, 6L, 13L, 6L, 8L, 29L, 8L,
8L, 8L, 22L, 10L, 6L, 6L, 8L, 1L, 8L, 8L, 6L, 8L, 18L, 2L,
6L, 2L, 21L, 10L, 1L, 2L, 2L, 21L, 22L, 2L, 8L, 21L, 19L,
19L, 11L, 21L, 3L, 16L, 21L, 8L, 16L, 8L, 15L, 3L, 9L, 3L,
23L, 3L, 19L, 13L, 8L, 12L, 23L, 7L, 12L, 19L, 12L, 7L, 25L,
8L, 12L, 14L, 8L, 26L, 8L, 24L, 13L, 8L, 4L, 5L, 8L, 8L,
13L, 6L, 26L, 6L, 17L, 13L, 20L, 4L, 8L, 5L, 6L, 13L, 13L,
6L, 28L, 13L, 6L, 13L), .Label = c("Al", "Ar", "Bo", "Ca",
"Cj", "Cu", "Em", "Fa", "Fv", "Ga", "Ia", "Ib", "In", "Ir",
"Je", "Ji", "Jp", "Le", "Mr", "Ni", "Oi", "Pf", "Pi", "Pr",
"Pt", "Qu", "Sg", "Tr", "Vi"), class = "factor"), Altura_.m. = c(0.8,
0.76, 0.9, 0.37, 1, NA, 1.9, 1.05, 1, NA, 0.87, 0.15, 1.5,
0.6, 0.64, 0.56, 0.45, 1.4, NA, 0.6, NA, NA, NA, 0.45, NA,
NA, 0.46, 0.54, 0.4, 1.6, 0.4, 1.5, NA, 0.45, NA, NA, NA,
1.15, 0.55, 0.8, 0.35, NA, 0.25, NA, NA, 0.66, NA, 0.8, 0.9,
0.17, 0.9, 0.95, 0.42, 1.15, 0.9, 0.95, 1, 0.55, 1, NA, 0.9,
0.73, 0.72, 1.9, 1.15, 1.6, 0.96, 1.26, NA, 1.08, NA, 0.6,
1.2, 1, 0.65, 2.6, 1.8, 1.33, 0.88, NA, 0.99, 2.4, 0.44,
0.88, 1.1, 1.82, 0.49, 0.2, NA, 1.18, 0.38, NA, 1.07, NA,
0.3, 0.6, NA, 0.48, 0.64, NA, NA, 0.69, 0.69, 0.2, 1.6, 0.4,
0.4, 1.18, 0.54, NA, 0.6, 1.4, 0.2, 0.67, 1.28, 1.25, 0.6,
0.68, 0.87), Desenvolvimento = structure(c(3L, 3L, 3L, 4L,
3L, 1L, 2L, 3L, 3L, 1L, 3L, 4L, 3L, 4L, 4L, 4L, 4L, 3L, 1L,
4L, 1L, 1L, 1L, 4L, 1L, 1L, 4L, 4L, 4L, 2L, 4L, 3L, 1L, 4L,
1L, 1L, 1L, 3L, 4L, 3L, 4L, 1L, 4L, 1L, 1L, 4L, 1L, 3L, 3L,
4L, 3L, 3L, 4L, 3L, 3L, 3L, 3L, 4L, 3L, 1L, 3L, 3L, 3L, 2L,
3L, 2L, 3L, 3L, 1L, 3L, 1L, 4L, 3L, 3L, 4L, 2L, 2L, 3L, 3L,
1L, 3L, 2L, 4L, 3L, 3L, 2L, 4L, 4L, 1L, 3L, 4L, 1L, 3L, 1L,
4L, 4L, 1L, 4L, 4L, 1L, 1L, 4L, 4L, 4L, 2L, 4L, 4L, 3L, 4L,
1L, 4L, 3L, 4L, 4L, 3L, 3L, 4L, 4L, 3L), .Label = c("", "Bom",
"Regular", "Ruim"), class = "factor"), Qualidade = structure(c(2L,
2L, 2L, 4L, 2L, 1L, 3L, 2L, 2L, 1L, 2L, 4L, 2L, 2L, 2L, 2L,
2L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 3L,
2L, 1L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 2L,
1L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 1L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 3L, 1L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 4L, 1L, 2L, 3L,
1L, 2L, 1L, 3L, 3L, 1L, 2L, 2L, 1L, 1L, 3L, 2L, 3L, 3L, 3L,
2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L), .Label = c("",
"Boa", "Regular", "Ruim"), class = "factor"), Coroamento = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "Regular", class = "factor"),
Entrelinha = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Regular", "Ruim"), class = "factor")), .Names = c("Área",
"Amostra", "Nome", "Spp", "Altura_.m.", "Desenvolvimento", "Qualidade",
"Coroamento", "Entrelinha"), class = "data.frame", row.names = c(NA,
-119L))
Quando importei esses dados para o R, uma coisa que me chamou atenção é que para a coluna que continha dados numéricos, o próprio R colocou NA onde estava em branco. Nas demais colunas, que são categóricas, onde estava em branco o R deixou em branco mesmo. Eu não mexi em nada e rodei a parte do código que trata da confecção da tabela, conforme segue.
- Código:
#Aplicando para dados com 5 variáveis
attach(dados2)
#Resumo dos dados
summary(dados2)
#Tabela de "contingência"
tabela2<-table(Spp, Desenvolvimento, Qualidade, Coroamento, Entrelinha)
#"Agregando" as tabelas
tabela3<-ftable(tabela2)
tabela3
O código rodou mas acabou produzindo uma tabela com contagem numérica nas colunas para entrelinhas regular ou ruim em função das espécies e das condições das outras variáveis. Eu esperava que retornasse as espécies na primeira coluna e um valor de contagem nas demais colunas para, quem sabe, eu pudesse medir uma associação. Mas valeu, uma hora e gente acha um jeito rsrsrs.
Obrigado e bom fim de semana.
lipegui- Mensagens : 12
Data de inscrição : 03/10/2017
Re: Tabela de contingência com três variáveis
Assim que tiver um tempinho darei uma olada com calma, Felipe, para ver se podemos chegar no que você quer. Talvez seja necessário trabalhar com alguma outra função, vamos ver.
Em breve volto aqui, ok?
Em breve volto aqui, ok?
Re: Tabela de contingência com três variáveis
Felipe, você conseguiria construir um pequeno exemplo do que espera como resultado? Se você puder, vá no excel ou outro gerenciador de planilhas, e escreva um pedaço (com dados inventados, nem precisam ser reais) do que seria a tabela que você esperava como resultado no seu exemplo acima. Assim acho que pode ser mais fácil prosseguirmos em busca de uma solução, ok?
Re: Tabela de contingência com três variáveis
Boa noite prof. Marcos.
Então, eu estava esperando encontrar algo conforme e exemplo do código abaixo:
Eu peguei as 5 primeiras espécies e contei todas que tinham desenvolvimento bom, depois regular e ruim. Fiz isso para as demais variáveis (qualidade, coroamento e entrelinhas) e fui colocando cada um numa coluna.
Depois disso, será que dá pra usar um qui-quadrado, por exemplo, nesses dados para medir associação (por exemplo, para verificar se há influência do manejo no estabelecimento de um reflorestamento com espécies nativas)?
Um abraço!!
Então, eu estava esperando encontrar algo conforme e exemplo do código abaixo:
- Código:
structure(list(Spp = structure(1:5, .Label = c("Araticum", "Bordão_de_velho",
"Caboatã", "Cajazeira", "Cupiúba"), class = "factor"), Des_bom = c(0L,
2L, 0L, 0L, 3L), Des_reg = c(5L, 2L, 1L, 0L, 5L), Des_ruim = c(0L,
1L, 4L, 2L, 6L), Qual_bom = c(5L, 5L, 4L, 2L, 9L), Qual_reg = c(0L,
0L, 0L, 0L, 4L), Qual_ruim = c(0L, 0L, 1L, 0L, 1L), Cor_bom = c(0L,
0L, 0L, 0L, 0L), Cor_reg = c(5L, 5L, 5L, 2L, 14L), Cor_ruim = c(0L,
0L, 0L, 0L, 0L), Entr_bom = c(0L, 0L, 0L, 0L, 0L), Entr_reg = c(5L,
1L, 3L, 0L, 9L), Entr_ruim = c(0L, 4L, 2L, 2L, 5L)), .Names = c("Spp",
"Des_bom", "Des_reg", "Des_ruim", "Qual_bom", "Qual_reg", "Qual_ruim",
"Cor_bom", "Cor_reg", "Cor_ruim", "Entr_bom", "Entr_reg", "Entr_ruim"
), class = "data.frame", row.names = c(NA, -5L))
Eu peguei as 5 primeiras espécies e contei todas que tinham desenvolvimento bom, depois regular e ruim. Fiz isso para as demais variáveis (qualidade, coroamento e entrelinhas) e fui colocando cada um numa coluna.
Depois disso, será que dá pra usar um qui-quadrado, por exemplo, nesses dados para medir associação (por exemplo, para verificar se há influência do manejo no estabelecimento de um reflorestamento com espécies nativas)?
Um abraço!!
lipegui- Mensagens : 12
Data de inscrição : 03/10/2017
Re: Tabela de contingência com três variáveis
Opa, de volta aqui.
Bom, o exemplo acima na verdade só envolve duas variáveis, então seria uma tabela de contingência simples:
Acho que o código acima retorna o que você quer, não?
Mas note que a variável Desenvolvimento tem uma categoria "fantasma", que você poderia substituir por um nome como "desconhecido" (se for este o caso, claro).
Para mu qui-quadrado, possivelmente você teria que fazer um teste por espécie (ou, talvez, se fizer sentido, agregar espécies de um mesmo grupo, aumentando o n amostral), relacionando o estado de desenvolvimento com as variáveis de interesse. Faz sentido?
Bom, o exemplo acima na verdade só envolve duas variáveis, então seria uma tabela de contingência simples:
- Código:
table(dados2$Nome, dados2$Desenvolvimento)
Acho que o código acima retorna o que você quer, não?
Mas note que a variável Desenvolvimento tem uma categoria "fantasma", que você poderia substituir por um nome como "desconhecido" (se for este o caso, claro).
Para mu qui-quadrado, possivelmente você teria que fazer um teste por espécie (ou, talvez, se fizer sentido, agregar espécies de um mesmo grupo, aumentando o n amostral), relacionando o estado de desenvolvimento com as variáveis de interesse. Faz sentido?
Re: Tabela de contingência com três variáveis
Boa noite prof. Marcos.
Primeiramente obrigado pelas respostas.
Então, dá pra fazer tabelas de contingências simples envolvendo espécies e desenvolvimento, espécies e qualidade, espécies e coroamento e espécies e entrelinha. A minha ideia seria compilar tudo isso numa tabela só, como no exemplo que fiz, em que fiz usando só 5 espécies pq fiz no muque, lá no calc.
Ficaria algo assim:
Um qui-quadrado por espécie não é exatamente o que eu estava imaginando e sim para o reflorestamento. Até porque a ideia é verificar se existe, sob o ponto de vista estatístico, relação entre as espécies que foram plantadas e que estão se desenvolvendo no campo e o manejo empregado (que quase sempre é uma roçada nas entrelinhas, coroa ao redor da muda, adubação de base e vez ou outra, um combate de formigas).
Primeiramente obrigado pelas respostas.
Então, dá pra fazer tabelas de contingências simples envolvendo espécies e desenvolvimento, espécies e qualidade, espécies e coroamento e espécies e entrelinha. A minha ideia seria compilar tudo isso numa tabela só, como no exemplo que fiz, em que fiz usando só 5 espécies pq fiz no muque, lá no calc.
Ficaria algo assim:
Um qui-quadrado por espécie não é exatamente o que eu estava imaginando e sim para o reflorestamento. Até porque a ideia é verificar se existe, sob o ponto de vista estatístico, relação entre as espécies que foram plantadas e que estão se desenvolvendo no campo e o manejo empregado (que quase sempre é uma roçada nas entrelinhas, coroa ao redor da muda, adubação de base e vez ou outra, um combate de formigas).
lipegui- Mensagens : 12
Data de inscrição : 03/10/2017
Re: Tabela de contingência com três variáveis
No espaço em branco abaixo de "Ficaria algo assim:" era pra vir a figura abaixo
lipegui- Mensagens : 12
Data de inscrição : 03/10/2017
Tópicos semelhantes
» PCA com quatro varáveis, mas gerou três componentes principais. CCA também gerou três
» Estrutura de tabela
» Tabela de contingência e teste Qui-Quadrado
» Contagem (como na tabela dinâmica do excel)
» Como pegar dados da Tabela para calcular %
» Estrutura de tabela
» Tabela de contingência e teste Qui-Quadrado
» Contagem (como na tabela dinâmica do excel)
» Como pegar dados da Tabela para calcular %
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos