[R-br] Exrpotar formula de modelo para planilha

Cesar Rabak cesar.rabak em gmail.com
Sexta Abril 29 17:05:49 BRT 2016


SE você chegou num character string que contém toda a função de forma
"algébrica", você pode fazer o resto do "parsing" na planilha Excel
propriamente dita.

Meus 0,199999 centavos.



2016-04-29 10:35 GMT-03:00 Pedro Emmanuel Alvarenga Americano do Brasil <
emmanuel.brasil em gmail.com>:

> Ei Cesar e Leonardo,
>
> Por algum motivo que eu não sei informar, a sugestão do Leonardo (que eu
> já havia tentado antes) não retorna todos os coeficientes. Repare que nessa
> sugestão apenas 3 coeficientes aparecem idade, mas fórmula possui 5
> coeficentes. Aonde estão os outros dois? Não sei.
>
> A sugestão do César tambem não era bem o caminho que eu esperava e não
> retorna ou que eu gostaria que retornasse.
>
> Mas eu tive uma pequena luz com a sugestão do parse que foi fazer um
>
> > x <- deparse(Function(f))
> > class(x)
> "character"
>
> Agora seria apenas editar a saida com estring e organizar como desejado.
> Mas eu ainda estou tendo dificuldades nesses passos porque os splits não
> presenrvam os + os - e os *. Então, me ocorreu que talvez eu pudesse olhar
> dentro da Function() pra ver o que ela faz e de onde ela tira esses
> coeficientes. Mas...
>
> Não estou conseguindo enxergar dentro da função.
> > Function
> function (object, ...)
> UseMethod("Function")
> <environment: namespace:Hmisc>
> > Function.cph
> Error: object 'Function.cph' not found
> > Function.rms
> Error: object 'Function.rms' not found
>
> ​Alguma dica de como entender o que faz a Function.cph()​
>
>
> Pedro Brasil
>
> Em 26 de abril de 2016 14:51, Cesar Rabak <cesar.rabak em gmail.com>
> escreveu:
>
>> Pedro,
>>
>> Em síntese o que você deseja fazer é um /parsing/ da fórmula e exportá-la
>> (na verdade os termos) para a planilha eletrônica.
>>
>> IIRC não há um pacote ou função que o faça direta e completamente, mas um
>> início saudável seria ir na linha deste post:
>> http://stackoverflow.com/questions/10224805/how-to-select-a-part-of-formula-in-formula-in-r
>> .
>>
>> HTH
>> --
>> Cesar Rabak
>>
>>
>> 2016-04-20 17:36 GMT-03:00 Pedro Emmanuel Alvarenga Americano do Brasil <
>> emmanuel.brasil em gmail.com>:
>>
>>> Amigos de R,
>>>
>>> Ajustei um modelo de sobrevivencia e gostaria de exportar o modelo uma
>>> planilha xlsx ou csv, de tal forma que os coeficientes fiquem numa coluna e
>>> na coluna ao lado fique pelo o que o coeficiente está multiplicando. Já
>>> quebrei a cabeça aqui e não consegui. A pegadinha é que o modelo possui
>>> algumas transformações por splines e por isso preciso dos valores dos nós
>>> pra cada variável contínua. Achei uma função chamada Function que faz isso.
>>> Mas depois disso eu não avancei. Eu gostaria de pegar da saída função
>>> Function o que está entre as chaves, quebrar nos "+" e nos "-" pra separar
>>> os termos e depois quebrar nos "*" pra separar as colunas. Organizar em
>>> formato de planilha e exportar.
>>>
>>> library(rms)
>>> n <- 1000
>>> age <- 50 + 12*rnorm(n)
>>> label(age) <- "Age"
>>> sex <- factor(sample(c('Male','Female'), n,
>>>                      rep=TRUE, prob=c(.6, .4)))
>>> cens <- 15*runif(n)
>>> h <- .02*exp(.04*(age-50)+.8*(sex=='Female'))
>>> dt <- -log(runif(n))/h
>>> label(dt) <- 'Follow-up Time'
>>> e <- ifelse(dt <= cens,1,0)
>>> dt <- pmin(dt, cens)
>>> units(dt) <- "Year"
>>> dd <- datadist(age, sex)
>>> options(datadist='dd')
>>> S <- Surv(dt,e)
>>> f <- cph(S ~ rcs(age,4) + sex, x=TRUE, y=TRUE)
>>> >Function(f)
>>> >function(age = 48.800654,sex = "Male") {0.28612987-0.017321951*
>>> age+0.00012586581*pmax(age-29.600456,0)^3-0.00046285671*pmax(age-44.273198,0)^3+0.00042111763*pmax(age-53.769262,0)^3-8.4126731e-05*pmax(age-69.855597,0)^3-0.64448916*(sex=="Male")
>>> }
>>> <environment: 0x0000000015fa7378>
>>>
>>> Pra ficar mais ou menos assim
>>> +0.28612987
>>> -0.017321951    age
>>> +0.00012586581  pmax(age-29.600456,0)^3
>>> -0.00046285671  pmax(age-44.273198,0)^3
>>> +0.00042111763  pmax(age-53.769262,0)^3
>>> -8.4126731e-05  pmax(age-69.855597,0)^3
>>> -0.64448916     (sex=="Male")
>>>
>>> Alguma luz?
>>>
>>> Abraço forte,
>>>
>>> Pedro Brasil
>>>
>>> _______________________________________________
>>> 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.
>>>
>>
>>
>> _______________________________________________
>> 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.
>>
>
>
> _______________________________________________
> 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/20160429/cd1db27a/attachment.html>


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