R – środowisko do

Preview:

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

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

• Inne pakiety można instalować później

R pod Linuxem

• $ mkdir mojkatalog

• $ cd mojkatalog

• $ R

• >…

• >q( )

R w Windows

• Utwórz „mojkatalog”

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

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

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

•Linux source(„mojekomendy.R”)

•Windows menu File->Source

Zapamiętanie wyników w pliku

sink(„mojewyniki.txt”)

sink( ) – wyniki z powrotem na ekran

Uruchamianie komend przygotowanych w pliku

tekstowym

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.

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ć

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)

aRytmetyka

aRytmetyka

+ - * / ^ log exp sin cos tan sqrt

sqrt( 3^2 ) daje 3

x daje 2 3 4

max( x ) daje 4

min( x ) daje 2

length( x ) daje 3

sum( x ) daje 9

Funkcje statystyczne

mean( x ) daje 3

sum( x ) / length( x ) daje 3

var( x ) daje 1

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

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”

Wybieranie z wektora (1)

a <- ( ”pies”, ”kot”, ”mysz”, ”papuga”)

a[2] kota[4] papugaa[3:4]mysz papuga

Wybieranie z wektora (2)

a <- c( 6, 7, 8, 9 )

a[ -(2:3) ] daje 6 i 9a[ a >= 8 ] daje 8 i 9a[ a != 7 ] daje 6, 8 i 9a[ a>6 & a!=8 ] daje 7 i 9a[ a<7 | a>8 ] -> b teraz b

zawiera 6 i 9

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

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

Macierze (1)

a <- 1:61 2 3 4 5 6

dim( a ) <- c( 2, 3 )1 3 52 4 6

a[ 2, 1 ] <- 01 3 50 4 6

Macierze (2)a1 3 2 4

b5 6

X<- cbind( a, b ) daje X=1 3 52 4 6

X<- rbind( a, a ) daje X=

1 3

2 4

1 3

2 4

Lista

rodzina <- list( tata=Jan, mama=Maria, l.dzieci=3, wiek.dzieci = c(5, 2, 1) )

rodzina[ [2] ] to Mariarodzina[ [4] ] [3] to 1alborodzina$tata daje Jan

Rama danychSpecjalna lista do składowania danych

Psy <-read.table( „mojplik.txt” , header=TRUE )attach( Psy ) # udostępnia daneNowePsy <- edit( Psy ) #edycja danych

ID IMIE RASA wagaP wagaK

1049 Aniel jamnik 18 16

1219 Rabuś spaniel 26 24.5

1246 Lotna jamnik 19 18.5

1078 Docent spaniel 26 22.7

Gdy pierwszy wiersz danych

stanowią nazwy (header) kolumn

Dane przykładowedata( ) wypisuje wszystkie bazy danychdata( nazwa_danych ) udostępnia dane

Jeżeli przykładowe dane są poza pakietem baselibrary( nls ) udostępnia pakiet nlsdata( )data( Puromycin ) udostępnia dane

data( )

data( chickwts )

attach( chickwts )

chickwts weight feed1 179 horsebean

2 160 horsebean

3 136 horsebean

4 227 horsebean

5 217 horsebean

6 168 horsebean …………………

Wczytujemy przykładowe dane

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

summary( weight )

Min. 1st Qu. Median Mean 3rd Qu. Max.

108.0 204.5 258.0 261.3 323.5 423.0

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…

hist( weight )

Tworzymy empiryczną dystrybuantę czyliempirical cumulative distribution function

library( stats )plot( ecdf( weight ) )

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„ )

qqnorm( weight )

dodajemy linięprostąqqline( weight )

Porównujemy kwantyle empiryczne i teoretyczne prawa strona jest trochę

za ‘krótka’

library( stats )shapiro.test( weight )

Shapiro-Wilk normality test

data: weight

W = 0.9767, p-value = 0.2101

Porównanie dwóch populacji

• O rozkładzie normalnym – test t

• O dowolnym rozkładzie ciągłym – test nieparametryczny Wilcoxona

table( feed )

feed

casein horsebean linseed

12 10 12

meatmeal soybean sunflower

11 14 12

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' ]

boxplot( R, Z )

Wykres ramka-wąsy

Porównanie dwóch populacji - test t

t.test( R, Z )

t = -3.3096

df = 48.512

p-value = 0.001767

Testujemy jednorodność wariancji

var.test( R, Z )

F test to compare two variances

data: R and Z F = 1.2699num df = 47denom df = 22 p-value = 0.5519

Test t gdy wariancje są równe

t.test( R, Z, var.equal=TRUE )

t = -3.172,

df = 69,

p-value = 0.002260

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.

Testy nieparametryczne analizują rangi

Obserwacje w populacjach A i B

12, 13, 15, 16, 17, 17.5, 19, 28

Rangi A : 1 3 4 5

Rangi B: 2 6 7 8

Przykład dla danych symulowanych

A <- rchisq( 100, 1 )hist(A)

B <- rchisq( 100, 5 )hist(B)

Test Wilcoxona

wilcox.test( A, B )

Wilcoxon rank sum test with continuity correction

data: A and B W = 736p-value < 2.2e-16alternative hypothesis: true mu is not equal to 0

Przy obserwacjach nie sparowanych Wilcoxon = Mann-Whitney

Porównanie wielu populacji

• O rozkładzie normalnym – analiza wariancji (ANOVA)

• O dowolnym rozkładzie ciągłym – test nieparametryczny Kruskal-Wallis

boxplot( weight ~ feed, data = chickwts )

ANOVA

Porównanie dwóch modeli liniowych

waga = μ + karma + błądmodel1 <- lm( weight ~ 1 + feed,

data=chickwts)

waga = μ + błądmodel2 <- lm( weight ~ 1 ,

data=chickwts)

ANOVA

anova( model1, model2 )

Analysis of Variance Table

Model 1: weight ~ 1Model 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

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

ANOVA - Sprawdzamy założenie

bartlett.test( weight ~ feed, data = chickwts )

Bartlett test for homogeneity of variances

data: weight by feed Bartlett's K-squared = 3.2597df = 5p-value = 0.66

Kruskal-Wallis

kruskal.test( weight ~ feed, data = chickwts )

Kruskal-Wallis rank sum test

Kruskal-Wallis chi-squared = 37.3427 df = 5 p-value = 5.113e-07

Zadanie dla chętnychAnalizowano wpływ mutacji w genie leptyny (CC, CG, GG) na ekspresję tego genu (poziom mRNA). Zbadano 14 świń i dla każdej wykonano 3 pomiary ekspresji genu. Zbadaj wpływ genu na średni (z trzech pomiarów) poziom leptyny. Wykorzystaj test nieparametryczny.

dane22.txtkol 1: genotyp Leptynykol 2: pomiar 1kol 3: pomiar 2kol 4: pomiar 3

http://jay.au.poznan.pl/~mcszyd/dyda/pakiety/index.html

Recommended