Wprowadzenie do programowania w SAS-ie oraz estymacji rozkładów

Podobne dokumenty
Wprowadzenie do estymacji rozkładów w SAS.

Wprowadzenie do Systemu SAS i programowania w SAS 4GL

SAS Podstawowe informacje przed ćwiczeniem 1

ZESTAW 1 SAS 4GL. Język stworzony na potrzeby przetwarzania dużych zbiorów danych. Składają się nań:

SAS. Wprowadzenie do Systemu I Języka 4GL. Seweryn Kowalski /9/2006 1

SAS Podstawowe informacje przed ćwiczeniem 2

SAS 4GL Podsumowanie.

PAKIETY STATYSTYCZNE

SAS 4GL ODS, przykładowe procedury.

Wprowadzenie do SAS. Jak zacząć? Enhanced Editor (1) Uruchamianie programu. Ćwiczenie 3. Definiowanie bibliotek

Tytuł: PRZETWARZANIE DANYCH W SAS Autor: Wioletta Grzenda, Aneta Ptak-Chmielewska, Karol Przanowski, Urszula Zwierz. Wstęp

Wprowadzenie do SAS 4GL Zapoznanie ze środowiskiem SAS University Edition oraz SAS Studio. Podstawowe pojęcia środowiska SAS.

W4 Eksperyment niezawodnościowy

Przetwarzanie danych. Biblioteka. Presentation title. Biblioteka:

1 Obliczenia na danych

PAKIETY STATYSTYCZNE

INFORMATYKA W SELEKCJI

Stosowanie indeksów ma swoje korzyści, ale bywa również kosztowne.

Informatyka w selekcji - Wykªad 4

PAKIETY STATYSTYCZNE

PAKIETY STATYSTYCZNE

Zadanie 1. Plik Nowy Kod. lub naciskając ikonę Nowy kod (jak na rysunku) Tworzymy bibliotekę o nazwie lab wpisując instrukcję

ZAJĘCIA 2. Przed rozpoczęciem zajęć należy wykonać instrukcje z poprzednich laboratoriów bądź z pliku zaj2_prep.sas. FILTROWANIE WIERSZY

Bloki anonimowe w PL/SQL

Wykład. Wprowadzenie do systemu SAS (import i transformacje danych)

Administracja i programowanie pod Microsoft SQL Server 2000

Dane dotyczące wartości zmiennej (cechy) wprowadzamy w jednej kolumnie. W przypadku większej liczby zmiennych wprowadzamy każdą w oddzielnej kolumnie.

Pascal - wprowadzenie

Przypisywanie bibliotek w architekturze SAS

Zasady programowania Dokumentacja

ANALIZA DANYCH W STATA 8.0 CZĘŚĆ II

Programowanie w języku Python. Grażyna Koba

Autor: Dariusz Piwczyński 1 Ćwiczenie: Doświadczenia 2-grupowe w układzie niezależnym i zależnym.

Liczby losowe i pętla while w języku Python

SAS Access to Hadoop, SAS Data Loader for Hadoop Integracja środowisk SAS i Hadoop. Piotr Borowik

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

DECLARE VARIABLE zmienna1 typ danych; BEGIN

1 Podstawy c++ w pigułce.

Wprowadzenie do SAS. Wprowadzenie. Historia SAS. Struktura SAS 8. Interfejs: SAS Explorer. Interfejs. Część I: Łagodny wstęp do SAS Rafał Latkowski

ANALIZA DANYCH W STATA 8.0

Pakiety Matematyczne - R Zestaw 2.

Regresja liniowa wprowadzenie

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Narzędzia informatyczne w językoznawstwie

Podstawy Programowania C++

PAKIETY STATYSTYCZNE 5. SAS wprowadzenie - środowisko Windows

SKRYPTY. Zadanie: Wyznaczyć wartość wyrażenia arytmetycznego

SAS Macro Language w pigułce

INFORMATYKA W SELEKCJI

"Szara codzienność" analityka czyli jak ułatwić sobie pracę: Usecase

Zadanie 1. Analiza Analiza rozkładu

Komputerowe wspomaganie eksperymentu 5

Podstawy programowania skrót z wykładów:

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Niezawodność diagnostyka systemów laboratorium

System operacyjny Linux

Wskaźniki. Programowanie Proceduralne 1

PRZYRZĄDY WIRTUALNE. Część 6 Macierze, klastry, wzory. Prof. Krzysztof Jemielniak

Wykład 14. Testowanie hipotez statystycznych - test zgodności chi-kwadrat. Generowanie liczb losowych.

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

lekcja 8a Gry komputerowe MasterMind

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

ρ siła związku korelacyjnego brak słaba średnia silna bardzo silna

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Oracle PL/SQL. Paweł Rajba.

SAS Hash Tables w pigułce

Spis treści 3 SPIS TREŚCI

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

SQL 4 Structured Query Lenguage

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Zadanie Tworzenie próbki z rozkładu logarytmiczno normalnego LN(5, 2) Plot Probability Distributions

Wykład 4 Wybór najlepszej procedury. Estymacja parametrów re

Układy VLSI Bramki 1.0

Wstęp do Programowania potok funkcyjny

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Język programowania PASCAL

Tablice cz. I Tablice jednowymiarowe, proste operacje na tablicach

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Część 1: OLAP. Raport z zajęć laboratoryjnych w ramach przedmiotu Hurtownie i eksploracja danych

Smarty PHP. Leksykon kieszonkowy

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Przykład eksploracji danych o naturze statystycznej Próba 1 wartości zmiennej losowej odległość

Oracle PL/SQL. Paweł Rajba.

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Systemy GIS Tworzenie zapytań w bazach danych

Umieszczanie kodu. kod skryptu

Pliki wykład 2. Dorota Pylak

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

COMARCH IT AKADEMIA. Programista VBA w Microsoft Excel (microbootcamp)

Delphi Laboratorium 3

Przykład rozwiązywania problemu w programie DSS1OPT

Algorytmy i struktury danych

Krótka instrukcja opracowania danych w programie SciDAVis v. 1-D013-win

rok 2006/07 Jacek Jarnicki,, Kazimierz Kapłon, Henryk Maciejewski

Rys.2.1. Drzewo modelu DOM [1]

Transkrypt:

Wprowadzenie do programowania w SAS-ie oraz estymacji rozkładów Henryk.Maciejewski@pwr.wroc.pl 1 Plan Co to jest SAS System Moduły Środowisko Organizacja danych przetwarzanych w SAS Programowanie w języku SAS 4GL Estymacja parametryczna rozkładów zmiennych losowych 2

Co to jest SAS System Historycznie SAS = Statistical Analysis System Obecnie (a) platforma do budowania systemów wspomagania decyzji (DSS) (zbiór modułów do analizy danych), (b) zbiór specjalizowanych aplikacji DSS Przykładowe moduły Base SAS język do przetwarzania danych, procedury analityczne) STAT procedury analizy statystycznej ACCESS dostęp do danych w różnych formatach (DBMS) GRAPH AF, webaf środowiska budowania aplikacji OLAP EIS... OR, QC, ETS,... specjalizowane procedury (badania operacyjne, niezawodność i kontrola jakości, szeregi czasowe, etc. Enterprise Miner aplikacja data mining Data Warehouse Administrator 3 Środowisko programu SAS MVA (MultiVendor Architecture): programy SAS wykonują się na VMS, CMS, OS/390, Unix, Windows, OS/2 bez modyfikacji Dane przetwarzane przez programy SAS: Pliki SAS (SAS files) Np. SAS data sets, views, MDDBs Które przechowywane są w bibliotekach SAS (SAS libraries) Referencja (LIBREF) do folderu, kartoteki itp. systemu operacyjnego, np. LIBNAME projekt c:\dane\projekt ; 4

Biblioteki (SAS Libraries) Biblioteki tworzone automatycznie przez SAS SASHELP SASUSER WORK -- SAS system files -- user profile files -- Biblioteka tymczasowa (pozostałe są permanentne) Odwołania do plików SAS kwalifikowane nazwy libraryname.filename, e.g., projekt.dane dane -- plik w bibliotece projekt -- plik w bibliotece WORK 5 Pliki danych SAS (SAS Data Sets) SAS data sets, dwa typy: DATA tablica fizycznie przechowująca dane VIEW kod (query), który tworzy logiczny data set Konwencje nazw Wiersze nazywają się obserwacjami Kolumny nazywają się zmiennymi (variables) SAS data set składa się z: Deskryptora - zawiera atrybuty data set-u i jego zmiennych Części zawierającej dane 6

Pliki danych SAS (SAS Data Sets) Wyświetlanie deskryptora SAS data set-u PROC CONTENTS DATA=projekt.test; RUN; -----Alphabetic List of Variables and Attributes----- # Variable Type Len Pos Format Informat Label ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 1 sex Char 2 16 $3. $3. sex 4 teach_duration Num 8 8 11. 11. teach_duration 2 teacher_code Num 8 0 11. 11. teacher_code 3 titel_code Char 12 18 $12. $12. titel_code Typy zmiennych w SAS character numeric Atrybuty zmiennych Length - długość zmiennej: numeric: 3-8, character 1-32767 (MS Windows) Format - jak wyświetlać (drukować) wartości zmiennej Informat - jak konwertować (skanować) input string do wartości zmiennej Label - opis zmiennej 7 Pliki danych SAS (SAS Data Sets) Wyświetlanie wartości w data set PROC PRINT DATA= projekt.test; RUN; Obs sex teacher_code titel_code teach_duration 1 M 1 006 1 2 M 2 502 1 3 M 3. 4 M 4 1 5 M 5 022 1 6 M 6 006 1 7 W 7 1 8 M 8 006 1 Missing value brak danych Wskazuje że w danej obserwacji nie przechowujemy wartoći dla danej zmiennej missing numeric value reprezentowana przez. (kropka) missing character value reprezentowana przez spację 8

Programowanie w SAS Pierwszy Program data test; teachers=283; students=853; all=teachers+students; s_per_t=students/teachers; DATA STEP tworzy data set test Tworzy zmienne w test Wykonuje data step proc print data=test; PROC STEP Wyświetla data set test Data Set WORK.FHS Obs teachers students all s_per_t 1 283 853 1136 3.01413 9 Przetwarzanie danych w programach SAS SAS Data Set Raport Raw data file DBMS tables (e.g.,.mdb)... DATA Step PROC Step... DATA Step... Plik zewnętrzny SAS Data Set Remote access (ftp, TCP/IP socket, etc.) Program w SAS SAS Log 10

Części programu: DATA Step, PROC Step DATA Step PROC Step Wczytuje dane wejściowe Np. data set, Pliki zewnętrzne itd. Przetwarza dane Tworzy wyjście Np. data sets, Plik zewnętrze Raporty Analiza danych, Tworzenie raportów (tekst, graf, HTML, PDF, itd.) 11 Algorytm DATA Step data students; input name $ sex $ note1 note2; avg=mean(note1,note2); datalines; Anna F 4 5 Ian M 3. Eva F 1 4 ; Obs name sex note1 note2 avg 1 Anna F 4 5 4.5 2 Ian M 3. 3.0 3 Eva F 2 1 1.5 12

Algorytm DATA Step-u Główna pętla DATA step: data step wczytuje jedną obserwację, Dane są umieszczane w PDV = Program Data Vector; PDV jest inicjowany na wartości missing na początku każdej iteracji data step Wykonuje instrukcje (statements) zapisane w DATA step (na danej obserwacji), Zapisuje obserwację do wynikowego data set (implicit OUTPUT) Uwaga: Implicit OUTPUT nie działa jeśli jawnie użyjemy OUTPUT statement w DATA step Dane wejściowe dla DATA step wskazujemy np. instrukcją: SET statement czytaj dane we z data set INPUT statement wczytaj linię z pliku zewnętrznego (np. wskazanego przez instrukcję INFILE) 13 Wybrane idiomy programisty Wybieramy obserwacje Wybieramy zmienne Tworzenie i modyfikowanie zmiennych Instrukcja OUTPUT Łączenie data set-ów (stacking, merging) BY-group processing Czytanie, pisanie plików zewnętrznych 14

Wybieramy obserwacje data male; if sex= F then delete; Zapisz wybrane obserwacje Używając subsetting IF: usuń obserwację jeśli wyrażenie true; data male; if sex= M ; or: data male; where sex= M ; zapisz obserwację jeśli wyrażenie true; Używając WHERE (instrujację lub data set option ) instrukcja WHERE data male; set students (where=(sex= M )); WHERE data set option 15 Wybieramy obserwacje data male; if sex= F then delete; data male; if sex= M ; or: data male; where sex= M ; Obs name sex note1 note2 avg 1 Anna F 4 5 4.5 2 Ian M 3. 3.0 3 Eva F 2 1 1.5 Obs name sex note1 note2 avg 1 Ian M 3. 3 data male; set students (where=(sex= M )); 16

Wybieramy zmienne data avg_only; drop sex note1 note2; data avg_only; keep name avg; or: data avg_only; set students (drop= sex note1 note2); Zapisz tylko wybrane zmienne Używając instrukcji DROP, KEEP Używając data set options DROP, KEEP data avg_only; set students (keep= name avg); 17 Wybieramy zmienne data avg_only; drop sex note1 note2; data avg_only; keep name avg; or: data avg_only; set students (drop= sex note1 note2); Obs name sex note1 note2 avg 1 Anna F 4 5 4.5 2 Ian M 3. 3.0 3 Eva F 2 1 1.5 Obs name avg 1 Anna 4.5 2 Ian 3.0 3 Eva 1.5 data avg_only; set students (keep= name avg); 18

Tworzymy nowe zmienne data pass (drop= sex note1 note2 avg); if avg < 2 then result='passed'; else result='failed'; Obs name sex note1 note2 avg 1 Anna F 4 5 4.5 2 Ian M 3. 3.0 3 Eva F 2 1 1.5 Obs name result 1 Anna failed 2 Ian failed 3 Eva passed 19 Tworzymy nowe zmienne ŻLE: data pass; set students (drop= sex note1 note2 avg); if avg < 2 then result='passed'; else result='failed'; Uwaga: W przykładzie zmienne sex, note1,2 i avg nie są czytane w wejściowego data set, stąd wartość avg jest niezainicjowana w DATA step (czyli jest missing) Obs name sex note1 note2 avg 1 Anna F 4 5 4.5 2 Ian M 3. 3.0 3 Eva F 2 1 1.5 Obs name avg result 1 Anna. passed 2 Ian. passed 3 Eva. passed 20

Instrukcja OUTPUT data males females; if sex='f' then output females; if sex='m' then output males; drop sex; Zapisuje aktualną obserwację do wyjściowego data set Uwaga: jeśli OUTPUT jest użyty jawnie w DATA step, implicit OUTPUT nie działa w data stepie (patrz algorytm DATA step) Obs name sex note1 note2 avg 1 Anna F 4 5 4.5 2 Ian M 3. 3.0 3 Eva F 2 1 1.5 females males 1 Anna 1 Ian 2 Eva 21 Instrukcja OUTPUT generacja danych data generator; do x=1 to 100; y=rannor(-1); output; end; Uwaga: nie ma instrukcji podającej źródło danych we (np. SET lub INPUT), stąd wykona się jedna iteracja gł. pętli DATA step Wynik: 100 liczb losowych z rozkładu normalnego N(0,1) Obs x y 1 1 0.52813 2 2 0.51177...... 99 99-0.23971 100 100 0.92665 22

Łączenie Data Set-ów (instrukcja SET) data all; set males females; data all2; set males(in=m) females(in=f); if m then sex= M ; if f then sex= F ; Przetwarzaj obserwacje z pierwszego data set, potem z drugiego itd. Rozróżnianie z którego zbioru pochodzi dana obserwacja: males(in=m) tworzy zmienną automatyczną m (m=1 dla obserwacji ze zbioru males; m=0 w przeciwnym przypadku) Uwaga: zmienne automatyczne (m and f) nie są zapisywane do wyjściowego data set Obs name note1 note2 avg sex 1 Ian 3. 3.0 M 2 Anna 4 5 4.5 F 3 Eva 2 1 1.5 F 23 Łączenie Data Set-ów (instrukcja MERGE) data lib; input name $ @8 date yymmdd10. title $20. ; datalines; Anna 2000/12/14 Hamlet Anna 2000/12/14 SAS Programming Witek 2001/07/12 XML ; proc sort data=students out=students_sort; by name; data st_books; merge students_sort lib; by name; keep name sex title; Match-merging data sets: Data set STUDENTS: Obs name sex note1 note2 avg 1 Anna F 4 5 4.5 2 Ian M 3. 3.0 3 Eva F 2 1 1.5 Data set LIB: Obs name date title 1 Anna 2000-12-14 Hamlet 2 Anna 2000-12-14 SAS Programming 3 Witek 2001-07-12 XML Result data set: Obs name sex title 1 Anna F Hamlet 2 Anna F SAS Programming 3 Eva F 4 Ian M 5 Witek XML 24

BY-group Processing w DATA Stepie data best_note worst_note; set exam; by st_code; if first.st_code then output best_note; if last.st_code then output worst_note; keep st_code sem note; BY-group jest podzbiorem obserwacji ze wspólną wartością zmiennej BYvariable (data set musi być posortowany wg tej zmiennej) Użycie instrukcji BY w DATA step tworzy zmienne automatyczne, np. FIRST.st_code LAST.st_code ustawiane przez DATA step na 1 dla pierwszej (ostatniej) obserwacji w BYgroup-ie Data set EXAM: st_code sem note 1 WS96/97 1 1 WS96/97 4 1 WS95/96 6 2 WS99/00 1 2 WS00/01 3 3 WS99/00 1 3 WS99/00 1... BY-group BY-group 25 Zmienne automatyczne Przykład sprawdzamy czy nie ma błędnych danych wejściowych: data results err_log; infile C:\temp\results.txt ; input name $ jump date yymmdd8.; if _error_ then output err_log; else output results; Tworzone przez DATA step; nie są częścią Program Data Vectora; nie są zapisywane do wynikowego data set, np. _N_ - nr iteracje DATA stepu _ERROR_ - ustawiane na 1 jeśli jest błąd przetwarzania danych (błędne dane we, błąd w operacji matematycznej) FIRST.by_variable LAST. by_variable patrz BY-group processing 26

Czytanie plików zewnętrznych data results err_log; infile C:\temp\results.txt ; input name $ 1-10 jump @24 date yymmdd8.; if _error_ then output err_log; else output results; Instrukcja INFILE wskazuje plik do czytania (może być fizyczna ścieżka lub FILEREF przypisane przez FILENAME fileref path ; INPUT Wczytaj (przynajmniej jedną) linię z pliku Konwertuj linię do wartości zmiennych wg: Specyfikacji zmiennych, np. name $ - character variable jump, date numeric variables Specyfikacji kolumn, np. name $ 1-10 zakres kolumn Informaów, np. date yymmdd. informat daty 27 Czytanie plików zewnętrznych data xy; input x y; datalines; 1 2 3 4 5 6 7 8 ; Obs x y 1 1 2 2 4 5 Modyfikacja funkcjonalności INPUT: INPUT var1 var2 var3 @@; INPUT nie czyta nowej linii jak długo w buforze linii są jeszcze dane nie skonwertowane do zmiennych data xy_ok; input x y @@; datalines; 1 2 3 4 5 6 7 8 ; Obs x y 1 1 2 2 3 4 3 5 6 4 7 8 28

Zapis plików zewnętrznych data _null_; *no data set; set exam; file 'c:\temp\exam.txt'; put student_code 1-4 ', ' sem @24 note 3.1 ; Instrukcja FILE wskaż plik do którego nastąpi zapis Instrukcja PUT zapisz jedną linię do pliku wy, używając FORMAT-ów zmiennych lub FORMAT-ów podanych w instrukcji PUT data _null_ nie twórz wyjściowego data set-u 29 Instrukcja RETAIN data wzrosty_miesieczne; set gielda; *data kurs mies; BY mies; RETAIN pocz; IF FIRST.mies then pocz=kurs; IF LAST.mies then DO; Wzrost=kurs-pocz; Output; end; Składnia polecenia RETAIN: RETAIN var initial_val; Zmienna var nie będzie inicjowana na missing na początku kolejnych iteracji DATA step (wartość będzie zachowana z poprzedniej iteracji) Również: var+expression; Co jest równoważne: RETAIN var 0; var=sum(var,expression); 30

Estymacja parametryczna rozkładów zmiennych losowych Estymacja na podstawie prób pełnych za pomocą procedur: PROC CAPABILITY (z modułu SAS/QC) PROC UNIVARIATE (z modułu Base SAS) Estymacja na podstawie prób obciętych PROC RELIABILITY (z modułu SAS/QC) 31 PROC CAPABILITY proc capability data=test; var t; histogram t / weibull ; Wykonaj analizę parametryczną rozkładu zmiennej t (zmienna numeryczna w zbiorze test) Polecenie histogram z opcją weibull realizuje dopasowanie rozkładu Weibulla do danych W wyniku dostajemy estymowane parametry rozkładu (patrz np. wykres histogramu z nałożoną funkcją gęstości) oraz wyniki testów zgodności rozkładów Możemy również użyć polecenia cdfplot oraz probplot 32

PROC CAPABILITY histogram i estymowana funkcja gęstości 33 PROC CAPABILITY test zgodności rozkładów Jeśli p Value jest mniejsze niż założony poziom istotności testu (np. 0.05), wówczas odrzucamy hipotezę zerową o zgodności rozkładów (czyli badana zmienna t nie ma rozkładu Weibulla) Goodness-of-Fit Tests for Weibull Distribution Test Statistic DF p Value Cramer-von Mises W-Sq 0.1169997 Pr > W-Sq 0.063 Anderson-Darling A-Sq 0.8760160 Pr > A-Sq 0.024 Chi-Square Chi-Sq 20.3972448 9 Pr > Chi-Sq 0.016 34

PROC CAPABILITY szacowanie prawdopodobieństwa zdarzenia proc capability data=test; var t; spec lsl=0.8 usl=1.3; histogram / weibull; 35 PROC CAPABILITY szacowanie prawdopodobieństwa zdarzenia Percent Outside Specifications for Weibull Distribution Lower Limit Upper Limit LSL 0.800000 USL 1.30000 Obs Pct < LSL 6.572770 Obs Pct > USL 2.816901 Est Pct < LSL 8.967087 Est Pct > USL 1.405525 36

PROC RELIABILITY proc reliability data=test; distribution Weibull; pplot t*censor( 1 ) / covb cfit = yellow cframe = ligr ccensor = red; inset / cfill = ywh; Wykonaj analizę parametryczną rozkładu zmiennej t, przy czym obserwacje w zbiorze test, w których zmienna censor przyjmuje wartość 1 należy traktować jako próby obcięte Polecenie distribution realizuje dopasowanie wskazanego rozkładu do danych W wyniku dostajemy parametry rozkładu estymowane na podst. próby obciętej oraz wykres pplot, na podstawie którego oceniamy zgodność rozkładów (jeśli próba pochodzi z rozkładu Weibulla, dane powinny układać się wzdłuż prostej). 37 PROC RELIABILITY - pplot 38