Otimização de Código

*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 (Fotógrafo) http://est.leandromarino.com.br/Blog (Estatístico) Cel.: + 55 21 9845-7707 Cel.: + 55 21 8777-7907

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:
Como referencia, coloquei o arquivo parit no link: http://pasteit.com/16647
Agradeco qualquer ajuda!!!
Atenciosamente, Leandro Marino http://www.leandromarino.com.br (Fotógrafo) http://est.leandromarino.com.br/Blog (Estatístico) Cel.: + 55 21 9845-7707 Cel.: + 55 21 8777-7907

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:
Como referencia, coloquei o arquivo parit no link: http://pasteit.com/16647
Agradeco qualquer ajuda!!!
Atenciosamente, Leandro Marino http://www.leandromarino.com.br (Fotógrafo) http://est.leandromarino.com.br/Blog (Estatístico) Cel.: + 55 21 9845-7707 Cel.: + 55 21 8777-7907

*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@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:
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@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.
participantes (2)
-
Leandro Marino
-
Paulo Justiniano