Solução para problemas com a função LeveneTest

Ir em baixo

Solução para problemas com a função LeveneTest

Mensagem por Prof. Marcos em Qui Nov 09, 2017 8:52 pm

Dúvida que surgiu no webnário, em breve posto a solução.
avatar
Prof. Marcos

Mensagens : 346
Data de inscrição : 23/12/2015
Idade : 37
Localização : Maceió, AL

Ver perfil do usuário https://cantinhodor.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Solução para problemas com a função LeveneTest

Mensagem por Prof. Marcos em Sex Nov 10, 2017 8:47 am

Voltei!

Explicando: durante o webnario, surgiu uma questão que eu já sei ser um pouco recorrente: a função leveneTest do pacote car falhou, com uma mensagem de erro de "não existe a função".

Isto já aconteceu comigo e com alunos de várias edições do programa, e me parece ser algum problema com o pacote car. Não sei por que isto ocorre, mas de vez em quando é um problema que aparece.

Temos duas soluções possíveis. A primeira é na base da insistência: salve seu script, feche o R, abra de novo e carregue o car novamente. Quase sempre funciona, apesar de ser bem chato ter que fazer isso de vez em quando...

A outra é a que eu apresentei ontem no webnário: podemos salvar a função car em um arquivo nosso, e chamá-lo quando necessário. Vou explicar como fazer isso a seguir, ok? Já volto e descrevo todos os passos. Wink
avatar
Prof. Marcos

Mensagens : 346
Data de inscrição : 23/12/2015
Idade : 37
Localização : Maceió, AL

Ver perfil do usuário https://cantinhodor.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Solução para problemas com a função LeveneTest

Mensagem por Prof. Marcos em Sex Nov 10, 2017 9:10 am

OK, vamos lá!

O truque aqui é "pegar" o código da função leveneTest. Não é suuuper trivial, mas também não é difícil, você pode fazer assim:

Código:
#O pacote:
library(car)

#Vendo o que tem na função, para pegar o que interessa:
methods(leveneTest)

#Agora chamando o código que queremos copiar:
car:::leveneTest.default

No final, você vai querer copiar o pedaço a seguir, e incluir antes dele um nome para a função. Eu vou usar um nome diferente, só para diferenciar da função que vem no pacote. Assim:

Código:
levente<-function (y, group, center = median, ...)
{
    if (!is.numeric(y))
        stop(deparse(substitute(y)), " is not a numeric variable")
    if (!is.factor(group)) {
        warning(deparse(substitute(group)), " coerced to factor.")
        group <- as.factor(group)
    }
    valid <- complete.cases(y, group)
    meds <- tapply(y[valid], group[valid], center, ...)
    resp <- abs(y - meds[group])
    table <- anova(lm(resp ~ group))[, c(1, 4, 5)]
    rownames(table)[2] <- " "
    dots <- deparse(substitute(...))
    attr(table, "heading") <- paste("Levene's Test for Homogeneity of Variance (center = ",
        deparse(substitute(center)), if (!(dots == "NULL"))
            paste(":", dots), ")", sep = "")
    table
}

Se você quiser queimar a primeira etapa e só copiar o código acima, já tá valendo.

Com o código acima, você já pode executar e depois chamar a função, com o nome levene().

Mas podemos tornar isso ainda mais fácil de usar. Salve o arquivo como um script, deixe ele na sua pasta de trabalho, e quando quiser, use a função source() para chamá-lo. No meu caso, chamei o arquivo de levene.R, e veja a seguir um exemplo de uso (lembrando que este arquivo levene.R precisa estar na pasta de trabalho, certinho?).

Lá vai o exemplo:

Código:
#Chamando a função:
source("levene.R")

#Testando com um exemplo:
data(iris)
summary(iris)

levene(iris$Sepal.Length, iris$Species)

É isso. Se tiverem dúvidas, basta perguntar. Wink
avatar
Prof. Marcos

Mensagens : 346
Data de inscrição : 23/12/2015
Idade : 37
Localização : Maceió, AL

Ver perfil do usuário https://cantinhodor.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Solução para problemas com a função LeveneTest

Mensagem por Drika em Dom Nov 12, 2017 12:46 am

Prof. Marcos, na minha versão do R (3.4.1 - "Single Candle"), não foi a função que sumiu; na verdade, não existe o pacote car! E quando eu busquei a ajuda ??levene a página do R não encontrou resultados. Estranho, né? Ainda bem que você ainda tem acesso ao código pra compartilhá-lo conosco! Funcionou! Obrigada! Very Happy
avatar
Drika

Mensagens : 10
Data de inscrição : 06/10/2017

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Solução para problemas com a função LeveneTest

Mensagem por Prof. Marcos em Seg Nov 13, 2017 4:10 pm

Drika escreveu:Prof. Marcos, na minha versão do R (3.4.1 - "Single Candle"), não foi a função que sumiu; na verdade, não existe o pacote car! E quando eu busquei a ajuda ??levene a página do R não encontrou resultados. Estranho, né? Ainda bem que você ainda tem acesso ao código pra compartilhá-lo conosco! Funcionou! Obrigada!   Very Happy

Mas que coisa! Você chegou a tentar instalar o pacote car de novo?

De qualquer forma, que bom que a solução funcionou! Very Happy
avatar
Prof. Marcos

Mensagens : 346
Data de inscrição : 23/12/2015
Idade : 37
Localização : Maceió, AL

Ver perfil do usuário https://cantinhodor.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Solução para problemas com a função LeveneTest

Mensagem por Drika em Seg Nov 13, 2017 4:46 pm

Ops! Confesso que não tinha tentado fazer isso! Embarassed Ainda não peguei o jeito... hehe. Faz parte do aprendizado!  Wink  

Instalei o pacote car e funcionou sim. Sem problemas! Abração!
avatar
Drika

Mensagens : 10
Data de inscrição : 06/10/2017

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Solução para problemas com a função LeveneTest

Mensagem por Prof. Marcos em Seg Nov 13, 2017 4:52 pm

Que bom que deu certo! É assim mesmo, com o tempo vamos descobrindo os truques e lidando com mais facilidade com problemas como este. Smile
avatar
Prof. Marcos

Mensagens : 346
Data de inscrição : 23/12/2015
Idade : 37
Localização : Maceió, AL

Ver perfil do usuário https://cantinhodor.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Solução para problemas com a função LeveneTest

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum