Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Como fazer a tabela da moda?

Sendo que os valores de Renda são quantitativos contínuos, a moda faria mais sentido em valores qualitativos ou quantitativos discretos. Contudo, fico curioso como poderia fazer a moda com o tapply(). Tentei fazer, mas ficou errado por causa do excesso de colunas à direita.

Mode <- function(x) {
    freq <- table(x)
    return( names(freq)[freq == max(freq)] )
}

moda <- tapply(dados$Renda , list(dados$Sexo, dados$Cor), Mode)
rownames(moda) <- c(sexo)
colnames(moda) <- c(cor)
moda
IndígenaBrancaPretaAmarelaParda
Masculino020007884000, 5000788
Feminino7887887881000, 3000788

Precisarei importar a biblioteca library(modeest)? E usar a função mfv()? Funciona o tapply()?

Column 1Column 2Column 3
TextTextText
1 resposta
solução!

Oii, Akhenaton, tudo bem?

O problema que você encontrou é que a função Mode que você definiu retorna todas as modas (ou seja: uma forma de multimodalidade), o que pode resultar em um número variável de colunas.

Um caminho para contornar isso seria modificar a função Mode para retornar apenas a primeira moda encontrada, mesmo que haja mais de uma. Aqui está um exemplo de como você poderia fazer isso:

Mode <- function(x) {
    freq <- table(x)
    return( names(freq)[freq == max(freq)][1] )  # Retorna apenas a primeira moda
}

moda <- tapply(dados$Renda , list(dados$Sexo, dados$Cor), Mode)
rownames(moda) <- c(sexo)
colnames(moda) <- c(cor)
moda

O resultado ficaria deste jeito:

retorno da primeira moda na função Mode, enquanto a variável "moda" está sem as colunas extras

E sobre a biblioteca modeest e a função mfv(), elas podem ser úteis se você quiser um método mais robusto para calcular a moda, que pode lidar com diferentes tipos de distribuições de dados.

Se outra dúvida surgir, estamos aqui! :)

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.