Wprowadzenie do obsługi programu R. R jest środowiskiem, w którym są dostępne metody statystyczne oraz metody analizy i wizualizacji danych W ponad tysiącu.

Slides:



Advertisements
Podobne prezentacje
Badania statystyczne Wykłady 1-2 © Leszek Smolarek.
Advertisements

Tablice 1. Deklaracja tablicy
Tworzenie wykresów. Aplikacja końcowa.
Komponenty bazy danych Baza danych Jest to uporządkowany zbiór powiązanych ze sobą danych charakterystycznych dla pewnej klasy obiektów lub zdarzeń,
R.
Pakiety statystyczne Maciej Szydłowski (dr)
Tworzenie stron w języku WML jest zbliżone do tworzenia stron w HTML. W obydwu przypadkach używa się do tego celu znaczników (tagów). Zadaniem znaczników.
Excel Wstęp do laboratorium 3..
Błędy popełniane przy tworzeniu prezentacji – zadanie dodatkowe
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
ARKUSZ KALKULACYJNY JUŻ PROŚCIEJ SIĘ NIE DA Wersja OFFICE 2010
Wprowadzenie do edytorów tekstu.
Arkusze kalkulacyjne, część 3
Excel Wykład 3.. Importowanie plików tekstowych Kopiuj – wklej Małe pliki Kolumny oddzielone znakiem tabulacji Otwieranie/importowanie plików tekstowych.
Microsoft Office Excel
Linux - polecenia.
Pliki tekstowe – A. Jędryczkowski © 2007 Turbo Pascal umożliwia wykorzystanie w programach plików tekstowych. Pliki takie zawierają informację niezakodowaną
Różne sposoby prezentacji danych
Word Tabela.
Dr inż. Dariusz Piwczyński, Katedra Genetyki i Podstaw Hodowli Zwierząt Zastosowanie arkuszy kalkulacyjnych w pracy naukowej – przygotowanie bazy danych.
Projektowanie tabeli w arkuszu kalkulacyjnym
Konfiguracja systemu Windows
Prezentacja danych w postaci wykresu
TECHNOLOGIE INFORMATYCZNE Tydzień 6
Technologie informacyjne EXCEL I
Technologie informacyjne EXCEL I
Systemy wejścia i wyjścia Michał Wrona. Co to jest system wejścia i wyjścia? Pobierania informacji ze źródeł danych, zdolnych przesyłać sekwencje bajtów,
Łódź, 3 października 2013 r. Katedra Analizy Nieliniowej, WMiI UŁ Podstawy Programowania Programy różne w C++
Tworzenie komiksu MS PowerPoint Beata Sanakiewicz.
Formatowanie tekstu w Microsoft Word
Wzorce slajdów programu microsoft powerpoint
MS Office MS PowerPoint 2007
Excel Wykresy – różne typy, wykresy funkcji.
ARKUSZ KALKULACYJNY EXCEL wykresy
Przemysław Pełka , Damian Kotarski
Informatyka +.
Obróbka obrazu w komputerze
Jak narysować wykres korzystając z programu Excel?
PWSW Mechatronika Wykład 7 Matlab cd.
Microsoft Disk Operating System
Statystyka medyczna Piotr Kozłowski
Kolumny, tabulatory, tabele, sortowanie
Formatowanie danych w arkuszu kalkulacyjnym
Poznajemy arkusz kalkulacyjny
Opracowanie mgr Karol Adamczyk
Typy danych, klucz podstawowy, klucz obcy
Iga Lewandowska I EMII MU
Podstawy tworzenia stron WWW w języku HTML Koło Naukowe Elektroniki Przemysłowej - KNEP Wykonali:Mariusz Zawistowicz i Karol Witowski.
Funkcje zaawansowane w Wordzie
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Instrukcja obsługi aplikacji „Wizualizacja produktów CRH Klinkier”
Pakiety numeryczne Wykresy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Tworzenie wykresów część I
Tworzenie wykresów część II Tworzenie wykresu domyślnego Modyfikacja wykresów Pasek narzędzi Wykres.
1. Adres względny 2. Adres bezwzględny 3. Adres mieszany.
Wykresy – różne typy oraz wykresy funkcji
Podstawowe zadania w programie Excel 2010 Klasa 2 TOR.
Istotą kolumn jest przedzielenie strony na kilka części położonych obok siebie. Ilość kolumn jest generowana przez użytkownika, odpowiednio dla jego potrzeb.
Do czego służy arkusz kalkulacyjny, jego budowa
Excel 2007 dla średniozaawansowanych Zajęcia z Prowadzący: Artur Kołos.
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
Środowisko Logo Komeniusz Program Logo Komeniusz jest edukacyjnym językiem programowania pracującego w środowisku Windows. Umożliwia rozwiązywanie problemów.
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Wykład 4 Dr Aneta Polewko-Klim
ARKUSZE KALKULACYJNE Ćwiczenia 20h.
T. 18. E Proces DGA - Działania (operatorka).
Tomasz Adamowicz Anna Kostun
ETO w Inżynierii Chemicznej
Zapis prezentacji:

Wprowadzenie do obsługi programu R

R jest środowiskiem, w którym są dostępne metody statystyczne oraz metody analizy i wizualizacji danych W ponad tysiącu pakietów dodatkowych udostępniona jest większość metod klasycznej i współczesnej statystyki System R oraz prawie wszystkie jego pakiety dodatkowe są darmowe do wszelkich zastosowań (licencja GNU GPL) R jest oparty na języku programowania. Oznacza to ogromną elastyczność systemu. Żeby korzystać z R nie trzeba jednak ani być programistą, ani nawet umieć programować Wprowadzenie do obsługi programu R

Co potrafi R?  obsługa danych praktycznie dowolnego rodzaju (np. MySQL, Oracle, ODBC, XML, SAS i wiele innych),  ogromna liczba gotowych do użycia narzędzi statystyki i analizy danych,  ogromne możliwości graficzne,  grafika o jakości prezentacyjnej (do raportów, prezentacji i publikacji),  operacje macierzowe,  prosty i efektywny język programowania R (w tym elementy programowania obiektowego),  możliwość integracji z praktycznie ze wszystkimi językami programowania i z wieloma innymi narzędziami (Excel, Statistica itp.). Wprowadzenie do obsługi programu R

> 2*2 [1] 4 > 2+2 [1] 4 > 4-2 [1] 2 > 4/2 [1] 2 > 2^2 [1] 4 > sqrt(4) [1] 2 > (2+2)^2-sqrt(2+2) [1] 14 > pi [1] > x <- 2+2 > xlub > print(x) [1] 4 Wprowadzenie do obsługi programu R Podstawowe operacje arytmetyczne

Typy obiektów  wektor – ciąg liczb, łańcuchów znaków tekstowych itp. konstruktor: wektor <- c(wartości ciągu oddzielone przecinkami) np. > x <- c(1,2,3,4,5,6,7,8,9,10) >x <- c(1:10) #ciąg rosnący od 10 do 1 >y <- c(10:1) #ciąg malejący od 10 do 1 >is.vector(x) #sprawdzenie czy zmienna x jest wektorem [1] TRUE Wprowadzenie do obsługi programu R

Typy obiektów  wektor – ciąg liczb, łańcuchów znaków tekstowych itp. > dane=c(11,13,2,5,8,9,14,6,10,7) > dane [1] > length(dane) [1] 10 > sort(dane) [1] > summary(dane) Min. 1st Qu. Median Mean 3rd Qu. Max > mean(dane) [1] 8.5 > var(dane) [1] > sd(dane) [1] Wprowadzenie do obsługi programu R

Typy obiektów  lista – obiekt złożony zawierający wiele informacji o różnym typie konstruktor: lista <- list(różne typy danych oddzielone przecinkami) > dane=c(11,13,2,5,8,9,14,6,10,7) > opis <- list(srednia=mean(dane), minimum=min(dane), maksimum=max(dane)) > print(opis) $srednia [1] 8.5 $minimum [1] 2 $maksimum [1] 14 Wprowadzenie do obsługi programu R

Typy obiektów  tablica – obiekt jedno lub wielowymiarowy zawierający informacje o uporządkowaniu elementów konstruktor: tablica <- array(dane, rozmiar) > tablica <- array(c(2,3,4,5,6,7),c(2,3)) > tablica [,1] [,2] [,3] [1,] [2,] > tablica[2,2] [1] 5 Wprowadzenie do obsługi programu R

Typy obiektów  tablica – obiekt jedno lub wielowymiarowy zawierający informacje o uporządkowaniu elementów > dane=c(11,13,2,5,8,9,14,6,10,7) > dim(dane) = c(2,5) > dane [,1] [,2] [,3] [,4] [,5] [1,] [2,] > nrow(dane) [1] 2 > ncol(dane) [1] 5 Wprowadzenie do obsługi programu R

Typy obiektów  macierz – tablica dwuwymiarowa konstruktor: macierz <- matrix(dane, liczba_kolumn, liczba_wierszy) > macierz <- matrix(c(1,3,4,-1,2,4,3,2,1), ncol=3, nrow=3) > macierz [,1] [,2] [,3] [1,] [2,] [3,] Wprowadzenie do obsługi programu R

Typy obiektów  tabela danych (ramka, data.frame) – macierz, w której poszczególne kolumny mogą zawierać wartości różnego typu konstruktor: tabela.danych <- data.frame(różne typy danych oddzielone przecinkami) > tabela.danych <- data.frame(LETTERS[1:10], 1:10, rep(c(F, T), 5)) > names(tabela.danych) <- c("Inicjał", "Kolejność", "Czy parzysty?") Wprowadzenie do obsługi programu R

Typy obiektów  tabela danych (ramka, data.frame) – macierz, w której poszczególne kolumny mogą zawierać wartości różnego typu > tabela.danych Inicjał Kolejność Czy parzysty? 1 A 1 FALSE 2 B 2 TRUE 3 C 3 FALSE 4 D 4 TRUE 5 E 5 FALSE 6 F 6 TRUE 7 G 7 FALSE 8 H 8 TRUE 9 I 9 FALSE 10 J 10 TRUE Wprowadzenie do obsługi programu R

Przykład: test χ 2 – wprowadzenie danych przy pomocy wektorów > dawka1=c(10, 48, 35, 10, 6) > dawka2=c(38, 90, 20, 12, 8) > dawka3=c(96, 55, 10, 6, 5) Wprowadzenie do obsługi programu R

Przykład: test χ 2 – wprowadzenie danych przy pomocy wektorów > dawka1=c(10, 48, 35, 10, 6) > dawka2=c(38, 90, 20, 12, 8) > dawka3=c(96, 55, 10, 6, 5) > chisq.test(cbind(dawka1, dawka2, dawka3)) # cbind tworzy obiekt typu tabela danych (data.frame) ! Pearson's Chi-squared test data: cbind(dawka1, dawka2, dawka3) X-squared = , df = 8, p-value < 2.2e-16 Wprowadzenie do obsługi programu R

Przykład: analiza wariancji w układzie jednoczynnikowym - wprowadzenie danych przy pomocy wektorów > zap1=c(4.2, 4.3, 3.7, 4.7, 4.6) > zap2=c(4.6, 4.9, 5.0, 4.5, 5.5) > zap3=c(4.7, 4.7, 5.6, 5.2, 4.8) > zap4=c(5.8, 4.9, 5.7, 5.6, 7.0)

Wprowadzenie do obsługi programu R Przykład: analiza wariancji w układzie jednoczynnikowym - wprowadzenie danych przy pomocy wektorów > zap1=c(4.2, 4.3, 3.7, 4.7, 4.6) > zap2=c(4.6, 4.9, 5.0, 4.5, 5.5) > zap3=c(4.7, 4.7, 5.6, 5.2, 4.8) > zap4=c(5.8, 4.9, 5.7, 5.6, 7.0) > dane1 = data.frame(wyniki=c(zap1, zap2, zap3, zap4),zapylenie=rep(1:4,each=5))

Wprowadzenie do obsługi programu R Przykład: analiza wariancji w układzie jednoczynnikowym - wprowadzenie danych przy pomocy wektorów > dane1 wyniki zapylenie

Wprowadzenie do obsługi programu R Przykład: analiza wariancji w układzie jednoczynnikowym - wprowadzenie danych przy pomocy wektorów I etap – ocena jednorodności wariancji testem Bartletta > bartlett.test(wyniki~zapylenie, dane1) Bartlett test of homogeneity of variances data: wyniki by zapylenie Bartlett's K-squared = , df = 3, p-value =

Wprowadzenie do obsługi programu R Przykład: analiza wariancji w układzie jednoczynnikowym - wprowadzenie danych przy pomocy wektorów II etap – weryfikacja Ho: µ zap1 = µ zap2 = µ zap3 = µ zap4 Wykorzystanie wbudowanej funkcji aov lub użycie aov jako parametru polecenia anova > aov(wyniki~factor(zapylenie),dane1) Call: aov(formula = wyniki ~ factor(zapylenie), data = dane1) Terms: factor(zapylenie) Residuals Sum of Squares Deg. of Freedom 3 16 Residual standard error: Estimated effects may be unbalanced

Wprowadzenie do obsługi programu R Przykład: analiza wariancji w układzie jednoczynnikowym - wprowadzenie danych przy pomocy wektorów II etap – weryfikacja Ho: µ zap1 = µ zap2 = µ zap3 = µ zap4 Wykorzystanie wbudowanej funkcji aov lub użycie aov jako parametru polecenia anova > anova(aov(wyniki~factor(zapylenie),dane1)) Analysis of Variance Table Response: wyniki Df Sum Sq Mean Sq F value Pr(>F) factor(zapylenie) ** Residuals Signif. codes: 0 ‘***’ ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Wprowadzenie do obsługi programu R Przykład: analiza wariancji w układzie jednoczynnikowym - wprowadzenie danych z pliku przy pomocy funkcji read. Plik powinien mieć jeden z formatów akceptowanych przez polecenie read. tj. txt lub csv (dozwolone są separatory typu spacja, przecinek i średnik) Konstruktor: read.obiekt_do_wczytania(plik, parametry ) Ścieżka dostępu zapisywana jest w następujący sposób:  dla plików umieszczonych w sieci: "  dla plików na dysku lokalnym: "c:/nazwa_katalogu/nazwa_pliku" Ścieżkę dostępu można wcześniej zdefiniować tak, aby obowiązywała dla wszystkich plików wczytywanych i zapisywanych w ramach danej procedury

Wprowadzenie do obsługi programu R Przykład: analiza wariancji w układzie jednoczynnikowym - wprowadzenie danych z pliku przy pomocy funkcji read. Ścieżka dostępu sprawdzenie aktualnej ścieżki: > getwd() ustawienie ścieżki: > setwd("matrix.ar.krakow.pl/~twojtowicz/nazwa_pliku") lub  setwd("c:/nazwa_katalogu/nazwa_pliku")

Wprowadzenie do obsługi programu R Przykład: analiza wariancji w układzie jednoczynnikowym - wprowadzenie danych z pliku przy pomocy funkcji read. Przygotowanie pliku: po odpowiednim ułożeniu danych w arkuszu kalkulacyjnym należy zapisać plik z rozszerzeniem.csv (MS-DOS) lub.txt (tekst rozdzielany znakami tabulacji) Przygotowanie środowiska R należy ustawić ścieżkę dostępu do katalogu zawierającego plik(i) z danymi poleceniem setwd(ścieżka_dostępu) lub wybierając polecenie „Zmień katalog (Change dir)” z menu „Plik (File)” Wczytanie pliku z danymi: > dane2 <- read.csv2("nazwa_pliku")

Wprowadzenie do obsługi programu R Przykład: analiza wariancji w układzie jednoczynnikowym - wprowadzenie danych z pliku przy pomocy funkcji read. Przygotowanie pliku: po odpowiednim ułożeniu danych w arkuszu kalkulacyjnym należy zapisać plik jako „lucerna.csv”

Wprowadzenie do obsługi programu R Przykład: analiza wariancji w układzie jednoczynnikowym - wprowadzenie danych z pliku przy pomocy funkcji read. Przygotowanie środowiska R należy ustawić ścieżkę dostępu do katalogu zawierającego plik(i) z danymi poleceniem setwd(ścieżka_dostępu) lub wybierając polecenie „Zmień katalog (Change dir)” z menu „Plik (File)” > getwd() [1] "C:/Users/Admin/Documents" > setwd("c:/R/") > getwd() [1] "C:/R"

Wprowadzenie do obsługi programu R Przykład: analiza wariancji w układzie jednoczynnikowym - wprowadzenie danych z pliku przy pomocy funkcji read. Wczytanie pliku z danymi: > dane2 <- read.csv2(„lucerna.csv") > dane2 dlugosc krzyz

Wprowadzenie do obsługi programu R Przykład: analiza wariancji w układzie jednoczynnikowym - wprowadzenie danych z pliku przy pomocy funkcji read. Obliczenie analizy: > anova(aov(dlugosc~factor(zapyl),data=dane2)) Analysis of Variance Table Response: wyniki Df Sum Sq Mean Sq F value Pr(>F) factor(zapylenie) ** Residuals Signif. codes: 0 ‘***’ ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Wprowadzenie do obsługi programu R Przykład: analiza wariancji w układzie dwuczynnikowym Przygotowanie pliku: po odpowiednim ułożeniu danych w arkuszu kalkulacyjnym należy zapisać plik jako „kukurydza.csv”

Wprowadzenie do obsługi programu R Przykład: analiza wariancji w układzie dwuczynnikowym Wczytanie pliku z danymi: > dane3 <- read.csv2("kukurydza.csv") > dane3 Dane Inok Naw k1 w k1 w k1 w k1 w k1 w k1 w k1 w k1 w k1 w k1 w k2 w k2 w k2 w4

Wprowadzenie do obsługi programu R Przykład: analiza wariancji w układzie dwu Obliczenie analizy: > anova(aov(Dane~Inok*Naw,data=dane3)) Analysis of Variance Table Response: Dane Df Sum Sq Mean Sq F value Pr(>F) Inok e-11 *** Naw e-13 *** Inok:Naw ** Residuals Signif. codes: 0 ‘***’ ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Wprowadzenie do obsługi programu R Graficzna prezentacja danych FunkcjaEfekt plot podstawowy wykres rozrzutu hist histogram pie wykres kołowy barplot wykres słupkowy boxplot wykres pudełkowy pairs zestaw wykresów rozrzutu stars wykres radarowy mosaicplot wykres mozaikowy n = 10^3 plot(rnorm(n), rnorm(n), main = "Proba 2D rozkladu normalnego")

data <- matrix(c(8, 9, 12, 11, 13, 15), 2, 3) Wprowadzenie do obsługi programu R Graficzna prezentacja danych PszenicaŻyto Kontrola89 Nawóz_11211 Nawóz_21315

data<-matrix(c(8,9,12,11,13,15), 2, 3, dimnames = list(c("Pszenica","Żyto"), c("Kontrola","Nawóz_1","Nawóz_2"))) barplot(data) Wprowadzenie do obsługi programu R Graficzna prezentacja danych PszenicaŻyto Kontrola89 Nawóz_11211 Nawóz_21315 Wykres słupkowy

barplot(data[1,]) Wprowadzenie do obsługi programu R Graficzna prezentacja danych PszenicaŻyto Kontrola89 Nawóz_11211 Nawóz_21315 data<-matrix(c(8,9,12,11,13,15), 2, 3, dimnames = list(c("Pszenica","Żyto"), c("Kontrola","Nawóz_1","Nawóz_2"))) Wykres słupkowy dla danych w wierszach

par(mfrow=c(1,2)) # podział obszaru wykresu barplot(data, beside = TRUE) # porównanie rodzaju nawozu barplot(t(data), beside = TRUE) # porównanie gatunków Wprowadzenie do obsługi programu R Graficzna prezentacja danych Zestaw wykresów słupkowych dla danych

par(mfrow=c(1,2)) par(bg = „lightblue") # kolor tła obszaru kreślenia barplot(data, beside = TRUE, col = topo.colors(2)) par(lwd=2, lty=3) # grubość linii 2, styl - kropki barplot(t(data), beside = TRUE, col = heat.colors(2), border='blue') Wprowadzenie do obsługi programu R Graficzna prezentacja danych Dodanie kolorów i krawędzi słupków

barplot((data), beside = TRUE, col = 'blue', density=c(4,15), angle=c(0,45)) Wprowadzenie do obsługi programu R Graficzna prezentacja danych Dodanie kreskowania

barplot(data, beside = TRUE) title(main = list("Plonowanie gatunków zbóż w zależności od poziomu nawożenia.", font = 6, col = 'darkblue', cex = 1.1)) # parametry funkcji służą do ustawienia czcionki i koloru Wprowadzenie do obsługi programu R Graficzna prezentacja danych Ustawienie tytułu wykresu

barplot(data, beside = TRUE) title(main = list("Plonowanie gatunków zbóż w zależności od poziomu nawożenia.", font = 6, col = 'darkblue', cex = 1.1)) # parametry funkcji służą do ustawienia czcionki i koloru title(xlab = list("Nawozy", font = 6, col = 'darkblue', cex = 1), ylab = list("Plon [kg/poletko]", font = 6, col = 'darkblue', cex = 1)) Wprowadzenie do obsługi programu R Graficzna prezentacja danych Ustawienie opisu osi X i Y

barplot(data, beside = TRUE, xlim = c(0,13), args.legend = list(x ='right'), legend = rownames(data)) title(main = list("Plonowanie gatunków zbóż w zależności od poziomu nawożenia.", font = 6, col = 'darkblue', cex = 1.1)) # parametry funkcji służą do ustawienia czcionki i koloru title(xlab = list("Nawozy", font = 6, col = 'darkblue', cex = 1), ylab = list("Plon [kg/poletko]", font = 6, col = 'darkblue', cex = 1)) Wprowadzenie do obsługi programu R Graficzna prezentacja danych Dodanie legendy

barplot(data, beside = TRUE, xlim = c(0,13), args.legend = list(x ='right'), legend = rownames(data)) title(main = list("Plonowanie gatunków zbóż w zależności od poziomu nawożenia.", font = 6, col = 'darkblue', cex = 1.1)) # parametry funkcji służą do ustawienia czcionki i koloru title(xlab = list("Nawozy", font = 6, col = 'darkblue', cex = 1), ylab = list("Plon [kg/poletko]", font = 6, col = 'darkblue', cex = 1)) grid(nx=NA, ny=NULL, lwd = 1, col = 'black', lty=2) Wprowadzenie do obsługi programu R Graficzna prezentacja danych Dodanie linii siatki

ask — ustawienie na TRUE powoduje, ze przed rozpoczęciem rysowania użytkownik będzie musiał nacisnąć dowolny klawisz. Jest to przydatne przy rysowaniu wykresów etapami i zapisywaniu każdego z etapów. bg — kolor tła wykresu (background). col — kolor wykresu (linii, słupków etc. w zależności od kontekstu). col.axis — kolor osi. col.lab — kolor legendy osi. col.main — kolor głównego tytułu. col.sub — kolor podtytułów. fg — kolor powierzchni wykresu (foreground). font — rodzaj czcionki. 1 to krój normalny, 2 — pogrubiony, 3 — kursywa, 4 — pogrubiona kursywa. lty — rodzaj linii. 1 to ciągła, 2 — kreskowana, 3 — kropkowana, 4 — kropka-kreska, 5 — długa kreska, 6 — podwójna kreska. lwd — grubość linii, standardowo 1. mar — marginesy wykresu, standardowo c(5, 4, 4, 2) mfcol, mfrow — parametry umożliwiające rysowanie kilku wykresów na jednym „ekranie” w formie tabeli. Określają liczbę wierszy i kolumn tej tabeli. new — ustawiony na TRUE powoduje narysowanie wykresu na poprzednim, bez czyszczenia ekranu. pch — rodzaj symbolu rysowanego na wykresie do oznaczenia punktu. Wartość może być liczbą całkowitą lub jednym znakiem. Np. 2 oznacza drugi symbol ze standardowego zestawu, zas "X" — rysowanie liter X. xlog, ylog — ustawiając na TRUE uzyskujemy logarytmiczną skalę osi x lub y. xlim, ylim — przedziały osi x i y.