linguagem r

Download Linguagem R

If you can't read please download the document

Upload: anderson-sanches

Post on 24-May-2015

22.760 views

Category:

Technology


3 download

DESCRIPTION

Curso de Introdução a Linguagem R para estatísticos ministrado no IMECC / UNICAMP e na SPSS.

TRANSCRIPT

  • 1. Introduo a Linguagem R

2. Introduo a Linguagem R Prof. Me. Anderson Carlos D. Sanches [email_address] www.software.pro.br @andycds 3. Por que aprender? "Uma das coisas mais importantes que voc pode fazer dedicar um tempo para aprender uma linguagem de programao de verdade. Aprender a programar como aprender outro idioma: exige tempo e treinamento, e no h resultados prticos imediatos. Mas se voc supera essa primeira subida ngreme da curva de aprendizado, os ganhos como cientista so enormes. Programar no vai apenas livrar voc da camisa de fora dos pacotes estatsticos, mas tambm ir aguar suas habilidades analticas e ampliar os horizontes de modelagem estatstica." Traduo um tanto livre de Gotelli & Ellison, 2004. A Primer of Ecological Statistics. Sunderland, Sinauer. 4. Linguagem R

  • Conceitos

5. Manipulaes e objetos 6. Modos e atributos de objetos 7. Distribuies de probabilidade 8. Grficos 9. Programao 10. Apndice: Integrao de R com Banco de Dados MySQL 11. 12. 13. 14. 15. Histria

  • Surgiu como alternativa livre a linguagem S

16. Software para manipulao de informaes, elaborao de clculos e desenho de grficos 17. Diversas aplicaes 18. Extensvel atravs de pacotes 19. Software Livre 20. Instalando o R no Windows

  • 1. Faa o download no espelho da UFPR:

21. http://cran-r.c3sl.ufpr.br/ 22. 2. Execute a o instalador clicando sobre ele 23. 3. Selecione a ajuda complementar a ser instalada 24. 4. Selecione padro 25. 5. Clique no cone R 26. Instalando o R no Linux

  • apt-get install r-base

27. Instalando pacotes adicionais

  • No Windows:

28. Escolher espelho cran: Brasil(PR) 29. Instalar pacotes: RMySQL

  • No Linux:

30. apt-get install r-cran-rmysql 31. Editor de texto para R

  • Mundo Windows: Tinn-R

32. http://www.sciviews.org/Tinn-R/

  • Mundo Linux: Gedit

33. J vem com o Gnome! 34. 35. Manipulaes e objetos 36. Manipulaes

  • Verso: R.version

37. Informaes da sesso: sessionInfo() 38. Para limpar a tela: Ctrl+L 39. Para sair: q() 40. Neste ponto possvel salvar a rea de trabalho (y), no salvar (n) ou cancelar a sada (c) 41. Pedindo ajuda

  • help(solve) ou ?solve

42. Para casos onde possa haver confuso na notao, use aspas: help( " [[") 43. Navegando na documentao: help.start() 44. Para procurar um assunto: ??solve ou help.search(solve) 45. Para ver um exemplo: example(dpois) 46. Tente tambm:?help.search e ?help 47. Outras ajudas

  • Esboos (documentos em pdf):

48. vignette() 49. vignette("foreach") 50. Procura no site do R (manuais e listas de e-mail): 51. RSiteSearch("foo") 52. Note que

  • Os comandos so separados por ; ou enter

53. Maisculas ou minsculas fazem diferena 54. Para comentar algo, voc pode usar # 55. Se um comando no terminou numa linha, o prompt do R muda de > para + 56. Voc pode usar novamente um comando acessando-o com as setas para cima e para baixo 57. R como calculadora

  • 1/3

58. 913 + 15 / 3 + 2 59. 2 10 60. Agora faa voc: 61. Objetos

  • Atribuio:

62. a = 3oua 3ou3 -> aouassign("a", 3) 63. Esta seta () representa o menor e o menos ( 1,96): 1 pnorm(1.96, 0, 1) = 0.0249 292. Encontre k tal que P(Z < k) = 0,05: qnorm(0.05,0,1) = -1.6448 293. Encontre k tal que P(Z > k) = 0.025: qnorm(1-0.025,0,1) = 1.9599 294. Distribuio uniforme

  • (ENADE-09) Ana e Jos conversavam pela Internet e resolveram jogar dados. Cada vezque se lana o dado, o jogador ganha 1 ponto, se sair a face 6; e perde 1 ponto, caso sair a face 1. Para as outras faces, a pontuao nula. Como eles no possuem um dado, resolveram criar um dado virtual honesto. Dentre as alternativas de cdigo no ambiente computacional R, escolha aquela que simule o jogo proposto. Obs.: a funo runif(n, a, b) gera n valores independentes da distribuio Uniforme entre a e b.

295. Alternativas p 0 u runif(1, 0, 1) if (u < 1/6) p -1 if (u > 5/6) p 1 p 0 u runif(1, 0, 1) if (u < 1/3) p -1 if (u > 2/3) p 1 p 0 u runif(1, 1, 6) if (u < 1/3) p -1 if (u > 2/3) p 1 p 0 u runif(1, 0, 1) if (u == 1/6) p -1 if (u == 5/6) p 1 p 0 u runif(1, 1, 6) if (u < 1/6) p -1 if (u > 5/6) p 1 296. Binomial

  • Numa pessoa normal 60% dos leuccitos so neutrfilos. Se observarmos uma amostra de 10 leuccitos de uma pessoa supostamente normal, qual a probabilidade de encontrarmos pelo menos 8 neutrfilos?0,1672898

297. sum(dbinom(8:10,10,0.6)) 298. Binomial

  • Experimentalmente constatou-se que os casos de recuperao de uma certa doena, em uma semana, 85% quando os pacientes so tratados com a droga W. Se esse tratamento for aplicado a um grupo de 12 indivduos portadores desta doena, qual a probabilidade de haver no mnimo 2 indivduos no curados em uma semana?0,5565404
  • sum(dbinom(0:10, 12, 0.85))

299. Geomtrica

  • Sabe-se que 10% das peas produzidas por certa mquina apresentam defeitos. Num determinado dia, qual a probabilidade de que a terceira pea produzida por esta mquina seja a primeira defeituosa?0,081

300. dgeom(2,0.1) 301. Geomtrica

  • O custo na fabricao de um produto R$ 1.000. Supostamente terminado, o produto submetido a um teste. Se aprovado, encerra-se o processo, caso contrrio perde-se R$ 400 das peas do produto, que so substitudas e em seguida feito um novo teste, assim sucessivamente at a obteno de xito no teste. Sabendo-se que em 90% das vezes o teste realizado com sucesso, determine a probabilidade de que o custo de um produto supere R$ 1800.0,1%
  • (1-sum(dgeom(0:2, 0.9))) * 100

302. Pascal

  • Ou binomial negativa

303. Um dado lanado sucessivamente at se obter a face "1" pela terceira vez. Qual a probabilidade de serem necessrios exatemente cinco lanamentos?0,01929012 304. dnbinom(2,3,1/6) 305. Pascal

  • Numa populao com um nmero muito grande de indivduos, h 20% de hipertensos. Sero sorteadas, uma a uma e sem reposio, pessoas desta populao at se conseguir uma amostra de 3 hipertensos. Qual a probabilidade de serem necessrios pelo menos 6 sorteios?0,94208
  • 1 sum(dnbinom(0:2, 3, .2))

306. Hipergeomtrico

  • Suponhamos que num grupo composto por 12 pessoas existam 7 mulheres. Escolhendo-se simultaneamente 6 pessoas do grupo, qual a probabilidade de serem sorteadas 4 mulheres?0,3787879

307. dhyper(4, 7, 12-7, 6) 308. Hipergeomtrico

  • Pequenos motores eltricos so expedidos em lotes de 50 unidades. Antes de uma remessa ser aprovada, inspeciona-se uma amostra com 5 motores. Se nenhum dos 5 for defeituoso, o lote aprovado. Caso contrrio todo os motores so inspecionados. Suponha que existam 3 motores defeituosos no lote. Qual a probabilidade de que a inspeo 100% seja necessria?0,2760204
  • 1 dhyper(0, 3, 50-3,5)

309. Poisson

  • Suponhamos que os acidentes de trabalho numa fbrica ocorram segundo as hipteses de Poisson com uma mdia de 3 acidentes a cada 5 meses. Qual a probabilidade de ocorrer:

310. exatamente um acidente num ms?0,329287E 2 em 2 meses?0,2168598

  • algum acidente no prximo ms, sabendo-se que h um ms no ocorre acidente algum.0,4511884
  • dpois(1, 3/5)
  • dpois(2, 2*3/5)
  • 1 dpois(0, 3/5)

311. Poisson

  • A chegada de navios petroleiros, numa refinaria, obedece uma distribuio de Poisson. O nmero mdio de navios que chegam por dia 2. As instalaes da refinaria permitem aportar at 3 navios por dia, sendo que os excedentes a 3 devero seguir para outro porto. Suponha-se ainda que cada navio permanea por um dia na refinaria. Pede-se:

312. Poisson

  • em um dia, qual a probabilidade de ser necessrio mandar algum petroleiro para outro porto?

0,1428765

  • qual a probabilidade de que a partir de um dado instante passe 8 horas sem chegar navio algum?

0,5134171

  • em quanto as atuais instalaes devem ser aumentadas para permitir manobrar todos os petroleiros em 94% dos dias?

4

  • 1 sum( dpois( 0:3, 2 ) )
  • dpois( 0, 2 * 1/3 )
  • qpois(.94, 2)

313. Poisson

  • qual o nmero mais provvel de petroleiros que chegaro num certo dia?1 ou 2
  • qual o nmero mdio de petroleiros atentidos por dia?1,781982
  • Os que chegam no so o mesmo nmero que so atendidos!
  • 0 * dpois(0,2) + 1 * dpois(1,2) + 2 * dpois(2,2) +

3 * (1 sum(dpois(0:2, 2)))

  • barplot( dpois(0:7, 2), names=0:7, col=1:8)

314. Grficos 315. Exemplos

  • demo(graphics)

316. demo(persp) 317. demo(image) 318. demo(smooth) 319. Lista com todas as demonstraes: 320. demo() 321. Fontes e caracteres: 322. demo(Hershey); demo(Japanese); demo(plotmath) 323. Grficos

  • Pode-se desenhar diversos tipos de grficos: histogramas, box plots, scatter plots etc

324. Existem alguns pacotes para auxiliar o desenho de grficos, como o rggobi e o rgl (para grficos 3D) 325. Manipular a janela grfica: 326. par(mfrow=c( linhas , colunas )) 327. Histograma: hist(rt(10000, 100))#rt: t-student 328. Boxplot: boxplot(rpois(50, 10), rpois(50, 20), rpois(50, 15)) 329. Grficos

  • par(mfrow=c(2,4))

330. tipos = c("p", "l", "b", "c", "o", "h", "s") 331. for(i in 1:length(tipos)) plot(sin, -pi, 2*pi, type = tipos[i]) 332. Disperso: 333. x1 runif(30, 1, 50); x2 runif(30, 0, 1) 334. y 2 + 0.5 * x1 + 4 * x2 + rnorm(30, 0, 1) 335. pairs(cbind(x1, x2, y)) 336. Grficos

  • nota = c(8,9,10)

337. nome = c("Anderson","Renata","Lili") 338. barplot(nota, names.arg = nome, main = "Notas da Prova") 339. cores = c("yellow", "blue", "green") 340. barplot(nota, names.arg = nome, main = "Notas da Prova", col = cores) 341. barplot(nota, names.arg=nome, main="Notas da Prova", col = cores, horiz = TRUE) 342. Programao 343. Programando com R

  • Independncia de variveis:

344. a 1 345. b a 346. a a + 1 347. Quanto vale o b? 348. Funes mediaNota function(unificada, regimental) { media= (2 * regimental + unificada) / 3 media } 349. Programando com R X = 2i + 1i = 2 27 350. Laos for resp = 0 for (i in 2:27) { resp = resp + (2*i + 1) } resp 351. Desafio

  • Voc consegue escrever a funo fatorial?

fatorial = function(n) { mult = 1 for (i in 2:n) { mult = mult * i } mult } 352. Laos while fatores = function(n) { f = 2 while (n > 1) { while (n %% f == 0) { print(f) n = n / f } f = f + 1 } } 353. Condicionais mediaFinal = function(unificada, regimental) { media = (2 * regimental + unificada) / 3 media = round(media, 1) if (media >= 7) { print(paste("Aprovado:", media)) } else { if (media >= 4) { print(paste("Exame:", media)) } else { print(paste("Reprovado:", media)) }}} 354. Parmetros nomeados

  • mediaFinal(2, 8)#ou seria (8, 2)?
  • mediaFinal(unificada = 2, regimental = 8)
  • mediaFinal(regimental = 8, unificada = 2)

355. Operadores comparativos e lgicos

  • ==, !=, , =

356. negao: ! 357. e: & 358. ou: | 359. ou exclusivo: xor() 360. lgico sequencial && e ||: avaliam somente at obter resultado 361. (1 > 2) | (4 != 2 + 2) 362. Escrevendo operadores

  • Tambm possvel criar seu prprio operador:

"%diferencaAbsoluta%" = function(x, y) { abs(x-y) } 363. Recursividade

  • "Para entender a recursividade, fundamental entender a recursividade"

364. Funes podem chamar outras funes, inclusive elas mesmas 365. Fibonnacci: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55... 366. Recursividade

  • fibonacci = function(n) {

367. if (x < 2) return(n) 368. else return(fibonacci(x - 1) + fibonacci(x - 2)) 369. } 370. Bibliografia

  • Este material foi baseado nas seguintes referncias:

371. An Introduction to R:www.r-project.org 372. Tirinhas do Dilbert:http://www.flickr.com/photos/12110586@N06 373. Notas de aula da disciplina Linguagem de Programao do bacharelado em Estatstica da Unicapital, prof. Anderson Sanches 374. Consulte o autor para outras referncias 375. Dvidas

  • ?

376. 377. Obrigado! Anderson Carlos D. Sanches www.software.pro.br [email_address] Dvidas, sugestes, correes? 378. Apndice: Banco de Dados com MySQL 379. Integrando R com MySQL

  • Carregar a biblioteca

380. library("RMySQL") 381. Carregar o driver 382. drv = dbDriver("MySQL") 383. Conectar 384. con = dbConnect(drv, username="anderson", password="SENHA", dbname="world", host="localhost") 385. Depois de conectado

  • Exibir as tabelas daquela conexo/esquema

386. dbListTables(con) 387. Exibir os campos de uma tabela 388. dbListFields(con, "Country"); 389. Importar e exportar data.frames: 390. d