[R-br] Exrpotar formula de modelo para planilha

Pedro Emmanuel Alvarenga Americano do Brasil emmanuel.brasil em gmail.com
Sexta Abril 29 10:35:22 BRT 2016


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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160429/e681c5a8/attachment.html>


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