[R-br] Exrpotar formula de modelo para planilha

Cesar Rabak cesar.rabak em gmail.com
Terça Abril 26 14:51:35 BRT 2016


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


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