[R-br] Ajuda quasi likelihood

Fernando Mayer fernandomayer em gmail.com
Terça Abril 15 14:17:00 BRT 2014


Wagner,

se olhar dentro da função quasi, no início tem isso para o link

linktemp <- substitute(link)
    if (!is.character(linktemp))
        linktemp <- deparse(linktemp)
    if (linktemp %in% c("logit", "probit", "cloglog", "identity",
        "inverse", "log", "1/mu^2", "sqrt"))
        stats <- make.link(linktemp)
    else if (is.character(link)) {
        stats <- make.link(link)
        linktemp <- link

Ou seja, passando um caracter como

link <- "log"

vai fazer com que a função use

make.link(link)

e funciona como esperado. Já para a variance, a parte relevante eh essa

vtemp <- substitute(variance)
    if (!is.character(vtemp))
        vtemp <- deparse(vtemp)
    variance_nm <- vtemp
    switch(vtemp, constant = {
...

Portanto, se fizermos

variance <- "mu"

e seguir a lógica

(vtemp <- substitute(variance))
variance
class(vtemp)
[1] "name"

vtemp ja não eh mais um character, portanto ele vai executar

vtemp <- deparse(vtemp)
vtemp
[1] "variance"

variance_nm <- vtemp
variance_nm
[1] "variance"

Como dentro das opções do switch(...) ele não vai achar nenhuma opção, ele
vai para a alternativa no final que é

    switch(vtemp, constant = {
...

            }, variance_nm <- NA)

e variance_nm sendo NA vai cair nisso aqui

if (is.na(variance_nm)) {
        if (is.character(variance))
            stop(gettextf("'variance' \"%s\" is invalid: possible values
are \"mu(1-mu)\", \"mu\", \"mu^2\", \"mu^3\" and \"constant\"",
                variance_nm), domain = NA)

que é o erro. Agora, se isso faz sentido ou se é uma "falha" de programação
na função já não sei dizer (acredito que isso seja intencional, mas o
motivo não da pra saber).

De qualquer maneira vc pode modificar a função quasi() pra fazer do jeito
que vc esperaria, começando por tirar o substitute() ali no começo...

Abraço,



---
Fernando de Pol Mayer
Laboratório de Estatística Ambiental - LEA
Instituto de Matemática, Estatística e Física - IMEF
Universidade Federal do Rio Grande - FURG
URL: http://fernandomayer.github.io
e-mail: fernando.mayer [@] {gmail.com, furg.br}


2014-04-15 12:24 GMT-03:00 Wagner Bonat <wbonat em gmail.com>:

> Ok ! Mas vocês não acharam estranho não precisar fazer a mesma coisa para
> o link ?
> Vc teria alguma explicação para isso ?
>
> Obrigado !!
>
>
> Em 15 de abril de 2014 14:20, Éder Comunello <comunello.eder em gmail.com>escreveu:
>
>> Wagner, bom dia!
>>
>> Supondo que o vetor de valores possíveis é da classe 'expression':
>>
>> ### <code r>
>>  link = "log"
>> variance = "mu"
>> quasi(link = link, variance = as.expression(variance))
>> #
>> # Family: quasi
>> # Link function: log
>>
>> variance = "mu(1-mu)"
>> quasi(link = link, variance = as.expression(variance))
>> #
>> #Family: quasi
>> #Link function: log
>> ### </code>
>>
>> Éder Comunello <c <comunello.eder em gmail.com>omunello.eder em gmail.com>
>> Dourados, MS - [22 16.5'S, 54 49'W]
>>
>>
>>
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>
>
>
> --
> Wagner Hugo Bonat
> LEG - Laboratório de Estatística e Geoinformação
> UFPR - Universidade Federal do Paraná
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20140415/772ba3bd/attachment.html>


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