Upload
brynne-holder
View
60
Download
0
Embed Size (px)
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