[R-br] Dúvida função no R
Eduardo Leoni
e.leoni em gmail.com
Sábado Setembro 15 15:35:10 BRT 2012
Aqui no meu computador:
> sessionInfo()
R version 2.15.1 (2012-06-22)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] psy_1.1 ltm_0.9-8
[3] msm_1.1.2 random.polychor.pa_1.1.3.2
[5] nFactors_2.3.3 lattice_0.20-6
[7] boot_1.3-4 MASS_7.3-18
[9] psych_1.2.8 polycor_0.7-8
[11] sfsmisc_1.0-20 mvtnorm_0.9-9992
loaded via a namespace (and not attached):
[1] grid_2.15.1 splines_2.15.1 survival_2.36-14 tools_2.15.1
>
o erro aparece quando a função grm (na verdade o call pra optim dentro
dela) é chamada. É isso aí também?
2012/9/15 Felipe Buchbinder <felbuch em gmail.com>
> O que eu preciso fazer é exatamente o que o Eduardo fez, com uma
> modificação:
>
> O $p$, ao invés de ser um número gerado aleatoriamente, é o resultado de
> uma função logit.
>
> Obviamente, o resultado de uma logit é um número entre 0 e 1, então a
> solução do Eduardo é muito próxima do que eu preciso. Mas quando eu
> substituo o "runif(1)" pela minha função
> logística, os resultados deixam se ser entre 1 e 5.
>
> Por que isso pode estar ocorrendo?
> Aproveito e envio o código inteiro anexo.
>
> Mais uma vez, muito obrigado,
>
> Felipe
>
>
>
> 2012/9/15 Fabio Mathias Corrêa <fabio.ufla em yahoo.com.br>
>
>> Felipe
>>
>> Da forma que o Eduardo fez a função está retornando valores entre 1 e 5.
>> Não é isto o que vc quer?
>>
>> O table(s) está mostrando a frequência com que os valores apareceram na
>> simulação que ele fez.
>>
>> Valeu!
>>
>> Fábio Mathias Corrêa
>>
>> Universidade Estadual de Santa Cruz
>> Departamento de Ciências Exatas e da Terra - DCET
>>
>>
>> Campus Soane Nazaré de Andrade, km 16 Rodovia Ilhéus-Itabuna
>> CEP 45662-900. Ilhéus-Bahia
>>
>>
>> Tel.: 73-3680-5076
>> ------------------------------
>> *De:* Felipe Buchbinder <felbuch em gmail.com>
>> *Para:* r-br em listas.c3sl.ufpr.br
>> *Enviadas:* Sexta-feira, 14 de Setembro de 2012 23:00
>>
>> *Assunto:* Re: [R-br] Dúvida função no R
>>
>> Eduardo e Fábio,
>> Muito obrigado pela ajuda. Se o problema não está no which, alguma idéia
>> de onde ele possa estar?
>> A função *resp* já retorna resultados absurdos, então o problema tem que
>> estar nela. Só não vejo onde....
>>
>> 2012/9/14 Eduardo Leoni <e.leoni em gmail.com>
>>
>> E o problema não está no which...
>>
>> resp <- function() {
>> k <- 5
>> p.vec = NULL
>> for(category in 1:k) # k = 5
>> {
>> p = runif(1)
>> p.vec = c(p.vec,p)
>> }
>> ##Generates a random number
>> seed<-runif(1,0.2,0.8)
>> ##Selects an answer
>> temp = which ( p.vec>seed )
>> if( length (temp) > 0 ) { resp = max (temp) } else { resp = 1 }
>> resp
>> }
>> s <- NULL
>> for (i in 1:100) {
>> s <- c(s, resp())
>> }
>> > table(s)
>> >s
>> > 1 2 3 4 5
>> >15 6 10 21 48
>>
>>
>>
>> 2012/9/14 Eduardo Leoni <e.leoni em gmail.com>
>>
>> ifelse quando length é igual a 1 não é recomendável:
>>
>> > system.time(replicate(10000, if(1>0) {1} else { 0}))
>> user system elapsed
>> 0.028 0.000 0.030
>> > system.time(replicate(10000, ifelse(1>0, 1, 0)))
>> user system elapsed
>> 0.224 0.000 0.224
>> >
>>
>>
>> 2012/9/14 Fabio Mathias Corrêa <fabio.ufla em yahoo.com.br>
>>
>> Felipe,
>>
>> Realmente, o if resolve o problema.
>>
>> Só uma dica, troque o if por
>>
>> ifelse(length(temp)>0,resp=max(temp), resp=1)
>>
>> Quanto ao which, vc precisa corrgir!
>>
>> Valeu!
>>
>>
>> Fábio Mathias Corrêa
>>
>> Universidade Estadual de Santa Cruz
>> Departamento de Ciências Exatas e da Terra - DCET
>>
>>
>> Campus Soane Nazaré de Andrade, km 16 Rodovia Ilhéus-Itabuna
>> CEP 45662-900. Ilhéus-Bahia
>>
>>
>> Tel.: 73-3680-5076
>> ------------------------------
>> *De:* Felipe Buchbinder <felbuch em gmail.com>
>> *Para:* r-br em listas.c3sl.ufpr.br
>> *Enviadas:* Sexta-feira, 14 de Setembro de 2012 0:12
>>
>> *Assunto:* Re: [R-br] Dúvida função no R
>>
>> Fábio,
>>
>> Muito obrigado pela ajuda. Mas o *if *já não dá conta do caso em que
>> p.vec não possui um elemento maior do que seed? E como p.vec é construido
>> dentro de um loop que adiciona um elemento durante *k* iterações, como
>> ele pode ter mais do que *k* elementos? Eu achava que já tinha
>> controlado para evitar esses casos... não?
>>
>> mais uma vez obrigado,
>>
>> Felipe
>>
>> 2012/9/13 Fabio Mathias Corrêa <fabio.ufla em yahoo.com.br>
>>
>> O problema está nesta parte aqui!
>>
>> Nem sempre o vetor p.vec possui um elemento maior que o seed, e quando
>> isto ocorre retorna interger(0)
>>
>> Outro problema é que o which pega a posição do elemento, então, quando vc
>> pega o max(temp), se o vetor tem tamanho 20, por exemplo, ele vai retornar
>> o 20 e não o elemento.
>>
>> Precisa corrigir ai!
>>
>> temp = which(p.vec>seed) #we use this temporary vector in order to avoid
>> warnings should its length be zero
>> print(temp)
>> if(length(temp)>0){resp=max(temp)}else{resp=1}
>>
>> Valeu!
>>
>> Fábio Mathias Corrêa
>>
>> Universidade Estadual de Santa Cruz
>> Departamento de Ciências Exatas e da Terra - DCET
>>
>>
>> Campus Soane Nazaré de Andrade, km 16 Rodovia Ilhéus-Itabuna
>> CEP 45662-900. Ilhéus-Bahia
>>
>>
>> Tel.: 73-3680-5076
>> ------------------------------
>> *De:* Felipe Buchbinder <felbuch em gmail.com>
>> *Para:* r-br em listas.c3sl.ufpr.br
>> *Enviadas:* Quinta-feira, 13 de Setembro de 2012 15:24
>> *Assunto:* Re: [R-br] Dúvida função no R
>>
>> Obrigado pela referência,
>>
>> Preparei um CMR que envio anexo.
>>
>> Mais uma vez, obrigado
>> Felipe
>>
>> 2012/9/13 FHRB Toledo <fernandohtoledo em gmail.com>
>>
>> Felipe,
>>
>> Para CMR, consulte: https://gist.github.com/1088208
>>
>> att,
>> FH
>>
>>
>> 2012/9/13 Felipe Buchbinder <felbuch em gmail.com>
>>
>> O k foi definido no início do código, fora da função, como k = 5.
>>
>> Desculpe a ignorância, mas o que é um CMR? Como eu posso fazer um para
>> enviar à lista?
>>
>> Obrigado pela disposição,
>>
>> Felipe
>>
>>
>> 2012/9/13 Leonard de Assis <assis.leonard em gmail.com>
>>
>> Onde foi definido o k?
>>
>> []s
>> Leonard de Assis
>> assis <dot> leonard <at> gmail <dot> com
>>
>> Em 13/09/2012 12:56, Felipe Buchbinder escreveu:
>>
>> Prezados professores,
>>
>> Estou com um problema em uma função no R.
>> A função é a seguinte:
>>
>> resp <- function(subject,item,trait)
>> {
>>
>> p.vec = NULL
>>
>> for(category in 1:k) # k = 5
>> {
>> p = ogive ( theta[subject,trait] , a[item] , b[item,category] , D )
>> # aqui é uma logit (D=1) ou probit (D=1.7)
>> p.vec = c(p.vec,p)
>> }
>>
>> #Generates a random number
>>
>> seed<-runif(1,0.2,0.8)
>>
>> #Selects an answer
>>
>> temp = which ( p.vec>seed )
>> if( length (temp) > 0 ) { resp = max (temp) } else { resp = 1 }
>> resp
>> }
>>
>>
>>
>> Esta função está inserida em um loop e deveria me retornar um número
>> inteiro entre 1 e 5.
>> Da primeira vez, isto acontece.
>> Mas a partir da segunda, ela começa a me retornar valores como 20, 16,...
>>
>> Alguma idéia de porque isso acontece???
>>
>> Desde já, obrigado!
>>
>> Felipe Buchbinder
>>
>>
>>
>>
>> _______________________________________________
>> R-br mailing listR-br em listas.c3sl.ufpr.brhttps://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.
>>
>>
>>
>> _______________________________________________
>> 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.
>>
>>
>>
>>
>> _______________________________________________
>> 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/20120915/646f18e4/attachment.html>
Mais detalhes sobre a lista de discussão R-br