--- title: Praca domowa - funkcje author: Bartosz Maćkiewicz format: html: embed-resources: true code-copy: true lang: pl theme: cosmo lang: pl engine: knitr editor: source execute: error: false --- # Zadania do notebooka "Funkcje. `apply`, `lapply`, `sapply`" Czasami w życiu zdarza się, że w naszych danych znajdują się obserwacje odstające (*outliers*). Często chcielibyśmy policzyć średnią bez ich uwzględniania. Proszę napisać 2 funkcje obliczające średnią: * średnia "przycięta" (Wilcox) * średnia Tukeya (Tukey) Zaokrąglenie w dół (`floor`) dotyczy wyłącznie liczby obserwacji odrzucanych przy obliczaniu średniej przyciętej. W zadaniu z regułą Tukeya nie zaokrąglamy kwartyli, rozstępu ćwiartkowego ani progów odcięcia. # Średnia "przycięta" Z naszych obserwacji odrzucamy 10% najwyższych i najniższych wartości i z nich liczymy średnią. Proszę nie oszukiwać i nie używać funkcji `mean` z argumentem `trim` ani nie patrzeć, jak w tej funkcji wbudowanej w R jest to zrobione. Można jednak użyć funkcji `mean` z odpowiednim argumentem do sprawdzenia, czy napisana przez Państwa funkcja zwraca właściwy wynik. Funkcja powinna przyjmować 2 argumenty: *Specyfikacja funkcji* `srednia_przycieta(wektor, ileprocentprzycinamy)` Argument `ileprocentprzycinamy` ma przyjmować domyślnie wartość 10. Na potrzeby zadania zakładamy, że `wektor` jest niepustym wektorem liczbowym bez `NA`, `NaN` i wartości nieskończonych. Argument `ileprocentprzycinamy` jest pojedynczą liczbą z przedziału od 0 (włącznie) do 50 (wyłącznie); określa procent obserwacji odrzucanych z każdego końca uporządkowanego wektora. Jeżeli po zaokrągleniu liczba obserwacji do odrzucenia wynosi 0, liczymy średnią całego wektora. Nie trzeba obsługiwać argumentów niespełniających tych założeń. ## Przykład Oryginalne wartości (uporządkowane). 1,1,2,3,4,4,4,4,5,6,7,8,8,8,8,10,12,15,15,19 Wartości "przycięte" (ucinamy dwie najniższe i dwie najwyższe bo 0,1*20 = 2) 2,3,4,4,4,4,5,6,7,8,8,8,8,10,12,15 Przydatne funkcje: `sort` oraz `length`. ```{r} # Tutaj miejsce na Twój kod ``` # Średnia Tukeya Tukey zaproponował inną metodę radzenia sobie z tym problemem. Jego metoda polega na wykluczeniu przy obliczaniu średniej tych wartości, które są: * mniejsze od różnicy pierwszego kwartyla i 1,5-krotności rozstępu ćwiartkowego * większe od sumy trzeciego kwartyla i 1,5-krotności rozstępu ćwiartkowego. Rozstęp ćwiartkowy to różnica między trzecim a pierwszym kwartylem. *Specyfikacja funkcji* `srednia_tukeya(wektor, wielokrotnosciqr)` Argument `wielokrotnosciqr` ma przyjmować domyślnie wartość 1,5. Dla argumentu `wektor` obowiązują te same założenia co w zadaniu o średniej przyciętej. Argument `wielokrotnosciqr` jest pojedynczą, skończoną liczbą nieujemną. Kwartyle obliczamy domyślną metodą funkcji `quantile()` (`type = 7`). Obserwacje równe progom odcięcia pozostają w danych. Jeżeli po odrzuceniu obserwacji nie pozostanie żadna wartość, funkcja ma zwrócić `NA`. Nie trzeba obsługiwać argumentów niespełniających tych założeń. ## Przykład 1,1,2,3,4,4,4,4,5,6,7,8,8,8,8,10,12,15,15,19 IQR - 4,5 1.5 * IQR = 1,5 * 4,5 = 6.75 I kwartyl - 4,0 (więc odcinamy mniejsze niż -2,75) III kwartyl - 8,5 (więc odcinamy większe od 15,25) UWAGA: Istnieje przydatna funkcja `IQR`, której pozwalam użyć w zadaniu domowym! ```{r} # Tutaj miejsce na Twój kod ```