Blog do curso ECO1800 Técnicas de Pesquisa em Economia - Turma 2JC - PUC-Rio
sexta-feira, 4 de maio de 2012
Migrando para Dropbox
Isto não é propaganda ou endosso, turma. Quero só avisá-los de que estou mudando o depósito que uso para os arquivos de slides e listas de exercícios, disponíveis aqui no blog. Até agora, eu vinha usando o Scribd, que é mais dedicado a textos, mas andei enfrentando dificuldades em publicar alguns tipos de arquivos (por exemplo, CSV). Depois de avaliar o Dropbox por alguns dias, concluí que ele atende melhor aos nossos objetivos: é mais simples e parece ser mais estável e rápido do que o outro. A mudança deve ser transparente para vocês. Se algum de vocês enfrentar qualquer dificuldade para baixar os arquivos dos links do blog, peço que me comunique imediatamente por e-mail.
terça-feira, 3 de abril de 2012
A função sample() e probabilidades que não somam 1
Observamos em sala hoje que a função sample() não reclama se for designado ao seu argumento prob um vetor de probabilidades que não somam 1. Especificamente, o comando
produziu uma amostra de vinte números sorteados do conjunto {1, 2, 3}, sem reclamar de termos pedido que, no sorteio, o número 1 tivesse probabilidade 10%; o número 2, probabilidade 10%; e o número 3, probabilidade 90%. O que está acontecendo? Vamos descobrir apelando para a lei dos grandes números:
O vetor amostra criado acima contém um milhão de sorteios do conjunto {1, 2, 3}, com as mesmas probabilidades impróprias de antes. Depois de criar essa grande amostra, verifique quantos números 1, 2 e 3 foram produzidos, usando este comando:
Você verá que há aproximadamente 91 mil números 1; 91 mil números 2; e 818 mil números 3. De onde saíram essas frequências? Daqui:
91.000 ÷ 1.000.000 ≅ 0,1 ÷ 1,1 = 0,1 ÷ (0,1+0,1+0,9)
818.000 ÷ 1.000.000 ≅ 0,9 ÷ 1,1 = 0,9 ÷ (0,1+0,1+0,9)
Conclusão: quando a função sample() recebe um vetor de "probabilidades" cuja soma é diferente de 1, ela normaliza esses números, isto é, divide-os pela soma deles, e usa as probabilidades normalizadas para sortear elementos do espaço amostral representado no primeiro argumento.
PS: No último comando acima, usei pela primeira vez a estrutura de controle for, que ainda não estudamos. O que ela faz é simplesmente cumprir o comando print(length(amostra[amostra ==n])) três vezes, variando "n" de 1 a 3. O comando repetido, por sua vez, conta quantos números "n" são encontrados no vetor amostra.
produziu uma amostra de vinte números sorteados do conjunto {1, 2, 3}, sem reclamar de termos pedido que, no sorteio, o número 1 tivesse probabilidade 10%; o número 2, probabilidade 10%; e o número 3, probabilidade 90%. O que está acontecendo? Vamos descobrir apelando para a lei dos grandes números:
O vetor amostra criado acima contém um milhão de sorteios do conjunto {1, 2, 3}, com as mesmas probabilidades impróprias de antes. Depois de criar essa grande amostra, verifique quantos números 1, 2 e 3 foram produzidos, usando este comando:
Você verá que há aproximadamente 91 mil números 1; 91 mil números 2; e 818 mil números 3. De onde saíram essas frequências? Daqui:
91.000 ÷ 1.000.000 ≅ 0,1 ÷ 1,1 = 0,1 ÷ (0,1+0,1+0,9)
818.000 ÷ 1.000.000 ≅ 0,9 ÷ 1,1 = 0,9 ÷ (0,1+0,1+0,9)
Conclusão: quando a função sample() recebe um vetor de "probabilidades" cuja soma é diferente de 1, ela normaliza esses números, isto é, divide-os pela soma deles, e usa as probabilidades normalizadas para sortear elementos do espaço amostral representado no primeiro argumento.
PS: No último comando acima, usei pela primeira vez a estrutura de controle for, que ainda não estudamos. O que ela faz é simplesmente cumprir o comando print(length(amostra[amostra ==n])) três vezes, variando "n" de 1 a 3. O comando repetido, por sua vez, conta quantos números "n" são encontrados no vetor amostra.
domingo, 1 de abril de 2012
R bonitinho
Um site muito legal para aprender macetes do R é o inside-R. Ali dentro, descobri outro dia uma ferramenta que pretendo usar a partir de agora para preparar os textos aqui do blog. Chama-se Pretty R e é um gerador de código HTML a partir de código R que torna mais legível a sintaxe da linguagem. Por exemplo, o código abaixo calcula os cinquenta primeiros números de Fibonacci:
F <- c(0,1)
while(length(F) < 50) F <- c(F, sum(tail(F,2)))
Veja como fica na formatação Pretty R:
Bem mais claro, não é? Observe que os nomes de todas as funções da linguagem aparecem em azul no código embelezado e ligam à biblioteca de ajuda do R. Para testar, clique em tail diretamente no código acima e aprenda o que essa função faz.
PS: Nesse código usei a estrutura de repetição while (significa "enquanto", em inglês) que ainda não estudamos em sala. Mas a tradução do comando para o português é imediata: "enquanto o comprimento do vetor F for menor do que 50, acrescente-lhe mais um elemento, sendo o seu valor igual à soma dos dois últimos elementos do vetor F."
PS: Nesse código usei a estrutura de repetição while (significa "enquanto", em inglês) que ainda não estudamos em sala. Mas a tradução do comando para o português é imediata: "enquanto o comprimento do vetor F for menor do que 50, acrescente-lhe mais um elemento, sendo o seu valor igual à soma dos dois últimos elementos do vetor F."
terça-feira, 27 de março de 2012
Selecionando linhas de uma moldura de dados
Na terminologia das bases de dados relacionais, a moldura de dados (data frame) da linguagem R é uma estrutura em que cada linha representa uma entidade e cada coluna representa um atributo das entidades. Por exemplo, considere a sequência de comandos abaixo:
sexta-feira, 23 de março de 2012
Formatando números em R
Um comentário sobre formatação de números na linguagem R, assunto que surgiu em sala outro dia. Quando digitamos uma expressão na linha de comando e concluímos com [↵], a expressão é repassada automaticamente para a função print(), a qual "imprime" (i.e. mostra na próxima linha do console) o resultado da expressão. Por exemplo, quando digitamos
> sqrt(2)
O que o sistema na verdade executará quando pressionamos a tecla [↵] é o comando...
> sqrt(2)
O que o sistema na verdade executará quando pressionamos a tecla [↵] é o comando...
Assinar:
Postagens (Atom)