[R-br] Dúvida função no R

Leandro Marino leandromarino em leandromarino.com.br
Sexta Setembro 14 23:22:39 BRT 2012


*Felipe, *
*
*
*pelo que entendi você esta considerando modelos de teoria de resposta ao
item certo? E dados os parâmetros e o score simulado irá obter o padrão de
respostas certo?*
*
*
Em 14 de setembro de 2012 23:00, Felipe Buchbinder <felbuch em gmail.com>escreveu:

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


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