[R-br] Otimização de Código

Leandro Marino leandromarino em leandromarino.com.br
Quinta Janeiro 26 14:04:27 BRST 2012


*Paulo,*
*
*
*
*
*obrigado pela pronta resposta! :)*
*
*
*Vamos aos pontos. O a, b e c  estão no segundo link parit.*
*
*
*Na realidade é uma simulação MC de um modelo de 3 parâmetros da Teoria da
Resposta ao item.*
*
*
*Meu Theta tem dimensão 100000x1*
*dim(a) = **100 x 1*
*dim(b) = **100 x 1*
*dim(c) = **100 x 1*

os três foram agrupados em um unico arquivo 100 x 3 chamado parit e
disponível em http://pasteit.com/16647

a minha função PudT calcula a probabilidade de um aluno acertar ao item
dada sua proficiência. No caso, se rodar

PudT(rnorm(100000),1,0,.2,1.7) vou ter um vetor de tamanho 100000.

Acontece que vou replicar isto para cada item, ou seja, no caso, 100 vezes.
Ela esta rodando rápido, mas queria implementar uma melhoria no for. Não
sei muito bem como usar um apply neste caso para montar uma matriz
100000x100 aonde nas colunas terei a probabilidade do acerto de cada item.
Assim comparo com uma unif(100000x100) disposta em uma matriz também e a
simulação dos erros e acertos dos alunos.

Será que agora fui claro?


Atenciosamente,
Leandro Marino
Cel.: + 55 21 9845-7707
Cel.: + 55 21 8777-7907



Em 26 de janeiro de 2012 12:05, Paulo Justiniano <paulojus em leg.ufpr.br>escreveu:

> Leandro
>
> olhabndo aina mais seu codigo:
>
> 1 fiquei na divida se voce quere usar Theta ou Theta[i]
>
> 2. ma parece que nao precisa da funcao no for nem do apply que sugeri antes
>
> Como voce usa os vetores todos os elementos de
> ci + (1-ci)/(1 + exp(-D*ai*(Theta-bi)))
> pode ser calculado diretamente com os vetores, nao?
>
> algo como
> c + (1-c)/(1 + exp(-D*a*(Theta-b)))
>
> mas observando como usar Theta
>
>
>
>
> On Thu, 26 Jan 2012, Paulo Justiniano wrote:
>
>  Caro Leandro
>>
>> seu código não é exatamentre reproduzável (a,b,c nao sao dados nem
>> criados, nem a sua dimensao é conhecida) (nem mínimo)...
>> a seria bom comentários aqui sobre o que pretende
>> alem de que o proprio código poderia ser comentado
>>
>> Mas de qualque forma o critico me parece ser a inclusao de colunas
>> em "dados" a cada passo do for()
>> Este mecanismo não é bom por ficar copiando o objeto
>>
>> Possivies melhorias passariam por:
>>
>> 1. mudar a funcao para receber um vetor
>> 2. rodar com apply o quye deve gerar uma matriz que seria concatenada de
>> uma só vez a dados
>>
>> algo9 como:
>>
>> PudT <- function(abc, Th, D){
>>   PudT <- abc[3] + (1-abc[3])/(1 + exp(-D*abc[1]*(Th-abc[2])))
>>   PudT
>> }
>>
>> dados <- cbind.data.frame(cod=sprintf('**%06d',1:100000),Theta)
>>
>> #for(i in 1:100){
>> #dados[,i+2] <- PudT(dados$Theta,parit[i,1],**parit[i,2],parit[i,3],1.7)
>> #}
>>
>> dados$res <- apply(parit, 1, Th=Theta, D=1.7)
>>
>>
>> Sugiro testar em um conjunto pequeno para confrontar os resultados com os
>> seus
>>
>>
>>
>>
>> On Thu, 26 Jan 2012, Leandro Marino wrote:
>>
>>  Caros,
>>> alguém sabe me ajudar a otimizar o código do link abaixo:
>>>
>>> http://pasteit.com/16646
>>>
>>> Como referencia, coloquei o arquivo parit no link:
>>> http://pasteit.com/16647
>>>
>>> Agradeco qualquer ajuda!!!
>>>
>>>
>>>
>>> Atenciosamente,
>>> Leandro Marino
>>> http://www.leandromarino.com.**br <http://www.leandromarino.com.br>(Fotógrafo)
>>> http://est.leandromarino.com.**br/Blog<http://est.leandromarino.com.br/Blog>(Estatístico)
>>> Cel.: + 55 21 9845-7707
>>> Cel.: + 55 21 8777-7907
>>>
>>>
>>>
> _______________________________________________
> 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/20120126/660aad9e/attachment.html>


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