1 / 53

R – środowisko do

R. R – środowisko do. manipulowania danymi obliczeń na macierzach analizy statystycznej tworzenia wykresów tworzenia własnych programów, także statystycznych. http://cran.R-project.org. Standardowa instalacja Środowisko + 8 ‘standardowych’ pakietów statystycznych

Download Presentation

R – środowisko do

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. R

  2. R – środowisko do • manipulowania danymi • obliczeń na macierzach • analizy statystycznej • tworzenia wykresów • tworzenia własnych programów, także statystycznych

  3. http://cran.R-project.org • Standardowa instalacja • Środowisko + 8 ‘standardowych’ pakietów statystycznych • Inne pakiety można instalować później

  4. R pod Linuxem • $ mkdir mojkatalog • $ cd mojkatalog • $ R • >… • >q( )

  5. R w Windows • Utwórz „mojkatalog” • W skrócie do R ustaw właściwość „Rozpocznij w” (np. c:\mojkatalog)

  6. Pomoc w R • help( table ) lub ?table • help.start( ) – odpala przeglądarkę i wyświetla pomoc w postaci strony html • help.search – poszukiwanie pomocy na różne sposoby • example( temat ) – wyświetla przykład dla danego tematu

  7. Jêzyk R A i a to dwie ró¿ne rzeczy Polecenia R ; oddziela kolejne komendy w tym samej linii # ta linia jest niewa¿na ª strzałka przywraca poprzednie komendy

  8. Uruchamianie komend przygotowanych w pliku tekstowym • Linux source(„mojekomendy.R”) • Windows menu File->Source • Zapamiętanie wyników w pliku • sink(„mojewyniki.txt”) • sink( ) – wyniki z powrotem na ekran

  9. Obiekty czyli liczby, znaki, tabele, funkcje … objects( ) - wyświetla wszystkie bieżące obiekty rm( x, y ) – usuwa obiekty x i y Wszyskie obiekty razem tworzą workspace. Może być zapamiętany w twoim katalogu jeśli zechcesz.

  10. Tworzymy wektor liczb (obiekt) assign( x, c( 2.0, 3.0, 4.0 ) ) lub krócej x <- c( 2.0, 3.0, 4.0) albo c( 2.0, 3.0, 4.0 ) -> x i dalej Y <- c( x, 0, x ) – razem 7 liczb concatenate = powiązać

  11. aRytmetyka v <- 2 * x + y + 1 2 3 4 2 3 4 2 (x, x, 2) 2 3 4 2 3 4 2 (x, x, 2) 2 3 4 0 2 3 4 ( y=[x,0,x] ) 1 1 1 1 1 1 1 ---------------------------- 7 10 13 5 9 12 9 (v)

  12. aRytmetyka + - * / ^ log exp sin cos tan sqrt sqrt( 3^2 ) daje 3 xdaje 2 3 4 max( x ) daje 4 min( x ) daje 2 length( x ) daje 3 sum( x ) daje 9

  13. Funkcje statystyczne mean( x ) daje 3 sum( x ) / length( x ) daje 3 var( x ) daje 1

  14. Sekwencje regularne z <- 1:7 daje 1 2 3 4 5 6 7 z <- seq( -1.5, 1.0, by=0.5 ) daje -1.50 -1.0 -0.5 0.0 0.5 1.0 z <- seq( length=4, from=10, by=2 ) daje 10 12 14 16

  15. Wektory znakowe pakiet <- c( „SAS”, „R” ) jaki <- c( „płatny”, „darmowy” ) A <- paste( pakiet, jaki, sep=„ jest ” ) daje „SAS jest płatny” „R jest darmowy”

  16. Wybieranie z wektora (1) a <- ( ”pies”, ”kot”, ”mysz”, ”papuga”) a[2] kot a[4] papuga a[3:4] mysz papuga

  17. Wybieranie z wektora (2) a <- c( 6, 7, 8, 9 ) a[ -(2:3) ] daje 6 i 9 a[ a >= 8 ] daje 8 i 9 a[ a != 7 ] daje 6, 8 i 9 a[ a>6 & a!=8 ] daje 7 i 9 a[ a<7 | a>8 ] -> b teraz b zawiera 6 i 9

  18. Zmienna grupująca (1) styl <- c(”jazz”, ”folk”, ”hh”, ”hh”, ”folk” ) grupa <- factor( styl ) ; grupa [1] jazz folk hh hh folk Levels: folk hh jazz table( grupa ) folk hh jazz 2 2 1

  19. Obliczamy średnie w grupach styl<- c( ”jazz”, ”folk”, ”hh”, ”hh”, ”folk” ) cena <- c( 40 , 30 , 61 , 63 , 40 ) grupa <- factor( styl ) ; tapply ( cena, grupa, mean ) daje folk hh jazz 35 62 40

  20. Macierze (1) a <- 1:6 1 2 3 4 5 6 dim( a ) <- c( 2, 3 ) 1 3 5 2 4 6 a[ 2, 1 ]<- 0 1 3 5 0 4 6

  21. Macierze (2) b 5 6 a 1 3 2 4 1 3 5 2 4 6 X<- cbind( a, b ) daje X= 1 3 2 4 1 3 2 4 X<- rbind( a, a ) daje X=

  22. Lista rodzina <- list(tata=Jan, mama=Maria, l.dzieci=3, wiek.dzieci = c(5, 2, 1) ) rodzina[ [2] ] to Maria rodzina[ [4] ] [3] to 1 albo rodzina$tata daje Jan

  23. Rama danych Specjalna lista do składowania danych Gdy pierwszy wiersz danych stanowią nazwy (header) kolumn Psy <-read.table( „mojplik.txt” , header=TRUE ) attach( Psy ) # udostępnia dane NowePsy <- edit( Psy ) #edycja danych

  24. Dane przykładowe data( ) wypisuje wszystkie bazy danych data( nazwa_danych ) udostępnia dane Jeżeli przykładowe dane są poza pakietem base library( nls) udostępnia pakiet nls data( ) data( Puromycin ) udostępnia dane

  25. Wczytujemy przykładowe dane data( ) data( chickwts ) attach( chickwts ) chickwts weight feed 1 179 horsebean 2 160 horsebean 3 136 horsebean 4 227 horsebean 5 217 horsebean 6 168 horsebean …………………

  26. Podstawowa analiza danych • podstawowe statystyki • wykres ‘łodyga-liście’ • histogram • zgodność z rozkładem normalnym • dystrybuanta emp. i teoretyczna • wykres kwantyl-kwantyl • test Shapiro-Wilka

  27. summary( weight ) Min. 1st Qu. Median Mean 3rd Qu. Max. 108.0 204.5 258.0 261.3 323.5 423.0

  28. stem( weight ) The decimal point is 2 digit(s) to the right of the | 1 | 124444 1 | 5566777889 2 | 00112223333444 2 | 5556666667778 3 | 0001222222333334444 3 | 5678899 4 | 02 dwie obserwacje: 40… i 42…

  29. hist( weight )

  30. Tworzymy empiryczną dystrybuantę czyli empirical cumulative distribution function library( stats ) plot( ecdf( weight ) )

  31. Nakładamy dystrybuantę teoretyczną rozkładu normalnego srednia <- mean( weight ) odch.std <- sqrt( var( weight ) ) x <- seq( 100, 450, 1 ) gestosc <- pnorm( x, srednia, odch.std ) lines( x, gestosc, col = "red„ )

  32. Porównujemy kwantyle empiryczne i teoretyczne prawa strona jest trochę za ‘krótka’ qqnorm( weight ) dodajemy linię prostą qqline( weight )

  33. library( stats ) shapiro.test( weight ) Shapiro-Wilk normality test data: weight W = 0.9767, p-value = 0.2101

  34. Porównanie dwóch populacji • O rozkładzie normalnym – test t • O dowolnym rozkładzie ciągłym – test nieparametryczny Wilcoxona

  35. table( feed ) feed casein horsebean linseed 12 10 12 meatmeal soybean sunflower 11 14 12

  36. Karma roślinna ( bób + soja + siemię lniane + słonecznik ) R <- weight[ feed == 'horsebean' | feed == 'soybean' | feed == 'linseed' | feed == 'sunflower' ] Karma pochodzenia zwierzęcego ( kazeina + mięso ) Z <- weight[ feed == 'casein' | feed == 'meatmeal' ]

  37. Wykres ramka-wąsy boxplot( R, Z )

  38. Porównanie dwóch populacji - test t t.test( R, Z ) t = -3.3096 df = 48.512 p-value = 0.001767

  39. Testujemy jednorodność wariancji var.test( R, Z ) F test to compare two variances data: R and Z F = 1.2699 num df = 47 denom df = 22 p-value = 0.5519

  40. Test t gdy wariancje są równe t.test( R, Z, var.equal=TRUE ) t = -3.172, df = 69, p-value = 0.002260

  41. Porównanie dwóch populacji o dowolnych rozkładach ciągłych – test nieparametryczny Wilcoxona • H0: populacje mają ten sam rozkład ciągły (medianę) • H1: mediany rozkładów są różne • Brak założeń o normalności rozkładu! Wygodne! • Mniejsza moc! Jeśli można lepiej ‘unormować’ dane.

  42. Testy nieparametryczne analizują rangi Obserwacje w populacjachAi B 12, 13, 15, 16, 17, 17.5, 19, 28 Rangi A : 1 3 4 5 Rangi B: 2 6 7 8

  43. Przykład dla danych symulowanych B <- rchisq( 100, 5 ) hist(B) A <- rchisq( 100, 1 ) hist(A)

  44. Test Wilcoxona wilcox.test( A, B ) Wilcoxon rank sum test with continuity correction data: A and B W = 736 p-value < 2.2e-16 alternative hypothesis: true mu is not equal to 0 Przy obserwacjach nie sparowanych Wilcoxon = Mann-Whitney

  45. Porównanie wielu populacji • O rozkładzie normalnym – analiza wariancji (ANOVA) • O dowolnym rozkładzie ciągłym – test nieparametryczny Kruskal-Wallis

  46. boxplot( weight ~ feed, data = chickwts )

  47. ANOVA Porównanie dwóch modeli liniowych waga = μ + karma + błąd model1 <- lm( weight ~ 1 + feed,data=chickwts) waga = μ + błąd model2 <- lm( weight ~ 1 ,data=chickwts)

  48. ANOVA anova( model1, model2 ) Analysis of Variance Table Model 1: weight ~ 1 Model 2: weight ~ 1 + feed Res.Df RSS Df Sum of Sq F Pr(>F) 1 70 426685 2 65 195556 5 231129 15.365 5.936e-10 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

  49. summary( model1 ) Call: lm(formula = weight ~ 1 + feed, data = chickwts) Residuals: Min 1Q Median 3Q Max -123.909 -34.413 1.571 38.170 103.091 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 323.583 15.834 20.436 < 2e-16 *** feedhorsebean -163.383 23.485 -6.957 2.07e-09 *** feedlinseed -104.833 22.393 -4.682 1.49e-05 *** feedmeatmeal -46.674 22.896 -2.039 0.045567 * feedsoybean -77.155 21.578 -3.576 0.000665 *** feedsunflower 5.333 22.393 0.238 0.812495

More Related