[R-br] Exrpotar formula de modelo para planilha

Pedro Emmanuel Alvarenga Americano do Brasil emmanuel.brasil em gmail.com
Quarta Maio 4 10:35:43 BRT 2016


Well ... acabei desistindo e copiando do console e colando na planilha e
editando tudo no excel. Uma saída muito ruim do ponto de vista de
reprodutibilidade do processo. Além disso excel é muito ruim para fazer
coisas na mão porque com frequencia há comportamentos automáticos que
modificam o conteúdo das caselas.

Mas enfim... vou adiar esse aprendizado.

Pedro Brasil

Em 29 de abril de 2016 17:05, Cesar Rabak <cesar.rabak em gmail.com> escreveu:

> 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.
>>
>
>
> _______________________________________________
> 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/20160504/dab5de55/attachment.html>


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