Statystyka, prognozowanie, ekonometria, data mining
Reklama analizy statystyczne, statystyka, analiza wyników badań
Statystyka, prognozowanie, ekonometria, data mining
Forum miłośników statystyki - Statystycy całego Świata - Łączcie się :-)

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  Programy statystyczneProgramy statystyczne  DownloadDownload
 Ogłoszenie 
Zanim napiszesz posta zapoznaj się z regulaminem forum Zalecamy korzystać z TEX'a przy pisaniu wzorów Zlot użytkowników R - WZUR 3.0

Poprzedni temat «» Następny temat
Regresja liniowa oraz wnioskowanie statystyczne
Autor Wiadomość
bulva 
Chorąży


Pomógł: 5 razy
Posty: 175
Skąd: Zgierz
Wysłany: 2009-11-06, 18:43   Regresja liniowa oraz wnioskowanie statystyczne

Witam,
Mam pewien problem zwiazany z SAS. Rozwazam nastepujacy test:
, gdzie wspolczynnik kierunkowy w modelu prostej regresji liniowej o ktorym wiem iz
Chce miec 12 obserwacji zmiennej objasniajacej rownomiernie rozlozonych w punktach x=0, x=0.5 i x=1
Chce policzyc moc potrzebna do wykrycia (test studenta ) oraz minimalna licznosc probki aby moja moc wynosila 85%

Usiluje to zrobic w SAS, niestety jestem w nim dosc slaby i przydalaby mi sie mala pomoc w kilku punktach (nie jestem pewnie czy dobrze sie za to zabralem). Prezentuje swoj kod:

Kod:

/*Oto moje punkty:*/
DATA WORK.Design;
INPUT x;
DATALINES;
0
0.5
1
;
RUN;

/*Teraz wybieram z nich z powtorzeniem 12 obserwacji:*/
PROC SURVEYSELECT DATA = WORK.Design
    METHOD = URS
    REP = 1
    SEED = 100
    SAMPSIZE = 12 
    OUT = SAS.Points;
    ID _ALL_;
RUN;

/*Niestety nie wyglada to tak jakbym chcial, dostaje ile razy ktora sie powtorzyla zamiast rekordow, wiec kombinuje sobie tak:*/
DATA SAS.POINTS;
  SET SAS.Points;
  DO i = 1 TO NumberHits;
    OUTPUT;
  END;
  DROP i;
RUN;
/*Dziala*/
PROC PRINT DATA = SAS.Points;
RUN;

/*Teraz chce miec obserwacje zmiennej objasnianej:
12 -> to moje beta_0 (takie sobie wymyslilem po prostu)
2 -> to moje beta_1 (jezeli rozumiem poprawnie zadanie to taki wlasnie powinien byc ten   parametr w "populacyjnej=prawdziwej" linii regresji)
1.5*RANNOR(-1) -> ma byc bledem modelu (mnoze *1.5 aby miec odpowiednia wartosc sigma, seed -1 ma w teorii zapewnic mi losowosc, ale nie jestem pewien czy to dziala jak powinno...)
*/
DATA SAS.Points (DROP = NumberHits);
SET SAS.POINTS;
    y=12+2*x +1.5*RANNOR(-1);
RUN;
/*Cos tam dostalem:*/
PROC PRINT DATA = SAS.Points;
RUN;

/*Zaczynam z regresja, chce zachowac moje parametry w tabelce*/
ODS OUTPUT parameterestimates=SAS.Parameters(DROP = Model Dependent);
PROC REG DATA = SAS.Points;
    MODEL y = x;
RUN;QUIT;

/*
Wreszcie zaczynam liczenie mocy i licznosci. Moj pierwszy problem to jak przekazac do tej procedury parametry z zachowanej tabelki? Moj drugi problem to czy dobrze je interpretuje parametry tej procedury, na przykladowych danych:

Obs    Variable     DF       Estimate         StdErr     tValue     Probt
1     Intercept     1       12.44142        0.62070      20.04    <.0001
2        x             1        2.11592        0.89668       2.36    0.0400
*/

PROC POWER;
    ONESAMPLEMEANS
    ALPHA=.05 SIDES=2
    NULLM=0 MEAN=2.11592 /*NULLM - Ho mean; MEAN - wyliczona wartosc*/
    STDDEV=0.89668
    NTOTAL=12
    POWER=.;
RUN;

PROC POWER;
    ONESAMPLEMEANS
    ALPHA=.05 SIDES=2
    NULLM=0 MEAN=2.11592
    STDDEV=0.89668
    NTOTAL=.
    POWER=.85;
RUN;
 
     
Google

Wysłany:    Reklama google.

 
 
macleanek 
Szeregowy


Pomógł: 1 raz
Posty: 6
Skąd: Poznań
Wysłany: 2009-11-08, 23:53   

Moja propozycja dotyczy tylko pierwszego z problemów - proponuję wykorzystać ideę makrozmiennych do wczytania wartości ze zbioru. Zmodyfikowałem także część dotyczącą tworzenia zbioru.

data design;
do i=1 to 12;
los=rand('uniform');
if los <1/3 then x=0;
else if los>2/3 then x=1;
else x=0.5;
y=12+2*x +1.5*los;
output;
end;
keep x y;
run;
PROC PRINT DATA = design;
RUN;
PROC REG DATA = design outest=model outseb noprint;
MODEL y = x;
RUN;QUIT;
data _null_;
set model;
if _TYPE_='PARMS' then call symput('a1',x);
else if _TYPE_='SEB' then call symput('Da1',x);
run;
PROC POWER;
ONESAMPLEMEANS
ALPHA=.05 SIDES=2
NULLM=0 MEAN=&a1
STDDEV=&Da1
NTOTAL=12
POWER=.;
RUN;

PROC POWER;
ONESAMPLEMEANS
ALPHA=.05 SIDES=2
NULLM=0 MEAN=&a1
STDDEV=&Da1
NTOTAL=.
POWER=.85;
RUN;
 
     
bulva 
Chorąży


Pomógł: 5 razy
Posty: 175
Skąd: Zgierz
Wysłany: 2009-11-09, 00:07   

Wow :) Twoj kod jest elegancki i duzo prostszy, WIELKIE dzieki :) Zwlaszcza trick z macro zmienna mi sie podoba, zaczne uzywad od tej pory :)

Tylko jedno ale, wlasnie sie zorientowalem ze PROC POWER potrzebuje odchylenia standardowego a nie bledu standardowego estymatora, stad trzeba to co zwroci PROG REG przemnozyc przez pierwiastek z n przed podaniem PROC POWER, ale to drobna usterka (chociaz dla popranwosci wynikow oczywiscie kluczowa).
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych zakładek(IE)
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
salon fryzjerski warszawa |mieszkania w suwałkach | Ogłoszenia Podlasie | implanty | Bukmacherzy | Liga Polska | złoto | Typy bukmacherskie | betterware | bilety autokarowe | wynajem agregatów prądotwórczych | forum | portal studencki | płyty warstwowe | gotowa praca licencjacka | fotografia ślubna szczecin | alufelgi chromowane | okulary przeciwsłoneczne | rolety | hotel poznań | restauracja poznań | Ogrody Warszawa | strony internetowe olsztyn | stairlift | Radiologia cyfrowa | Nauka Jazdy Warszawa | konferansjer | Naprawa maszyn budowlanych | Maszyny budowlane części | sylwester na Słowacji | Kasyno | automyjnia | przetworniki ciśnienia | studio nagrań warszawa | dentysta warszawa | nowoczesne obrazy | |
Strona wygenerowana w 0,15 sekundy. Zapytań do SQL: 8