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

Felipe Buchbinder felbuch em gmail.com
Sexta Setembro 14 23:30:48 BRT 2012


certo

2012/9/14 Leandro Marino <leandromarino em leandromarino.com.br>

> *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.
>>
>
>
> _______________________________________________
> 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/adbbab55/attachment.html>


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