Manual för Epi-Info: Ex på analysprogram - Vanliga kommandon
Denna sida är uppdaterad 2005-07-31

För att förstå den här sidan bör du först ha läst:

När man analyserar data i Epi Info's analysdel (Analyze Data) använder man olika kommandon. Kommandona körs i tur och ordning, antingen ett i taget eller så kör man en hel serie kommandon i ett analysprogram. Denna webbsida beskriver kort de vanligaste kommandona.

Kommandon för att komma åt data

READ Läser in de data man vill använda. Oftast lagras alla data till ett projekt i en separat fil. Har man registrerat data i Epi Info ligger de lagrade i en fil med ändelsen .mdb (samma filformat som access). Registrerar man data i andra program har filen en annan ändelse. Excel har .xls. Read-kommandot kan läsa excelfiler förutsatt att de bara innehåller data och att översta raden anger variabelns namn. När man använder read-kommandot försvinner tillfälliga variabler man räknat fram. Det gör oftast inget för de kan snabbt räknas fram igen från grunddata. Exempel på READ-kommandot:
=====================
READ 'c:\epi_info\cts.mdb':viewbasdata
=====================
READ "Excel 8.0" 'c:\epi_info\projekt_a':'visits$'
FILESPEC HDR="YES" END
=====================
READ "dBASE IV" 'c:\epi_info\burkinaFaso.dbf'
=====================
READ "Epi6" 'c:\epi_info\sf36.rec' LINKNAME=sf36
=====================
READ "ODBC" sqldatadsn:bigtable LINKNAME=projekt_b
FILESPEC UID="Username" PWD="Password" END
=====================
Om filnamnet innehåller ett mellanslag måste det omges av '-tecken. Det finns ingen nackdel med att använda '-tecken om mellanslag saknas. Om filen som innehåller rådata inte är i filformatet för Epi2000 eller Microsoft Access måste en länk till rådata skapas. Om man inte anger ett speciellt länknamn skapas en tillfällig länk som kallas lnk# där # är ett löpnummer. Den tillfälliga länken (men inte filen med rådata) raderas när man gör ett nytt READ-kommando. Man kan skapa en permanent länk genom att ange ett LINKNAME. Denna permanenta länk (bara länkinformation, inte alla data) sparas i den senast använda Epi2000-filen. Om man vill kan man skapa en egen Epi2000-fil utan egna data som används för att härbärgera länkinformation till en mängd externa databasfiler. Om man läser in en Excelfil som innehåller flera blad anges namnet på bladet sist följt av $.
RELATE Efter ett read-kommando finns en datatabell i datorns minne. Vill man länka en annan tabell används relate-kommandot. Den nya tabellens variabler kan då bearbetas som om de hade funnits i den första tabellen. Normalt döljs poster som inte representeras i båda tabellerna. Om man lägger till ALL visas alla poster i den första tabellen även om en del av posterna inte är representerade i den andra tabellen. Det vanliga är att man bara länkar tabeller där varje post finns representerad i båda tabellerna. När man anger relate måste man givetvis ange vilket fält som identifierar varje post. Det här fältet bör innehålla ett unikt värde för varje post (rad). Fälten som identifierar posterna kan ha olika namn i de två tabellerna. Dessa fältnamn anges i kommandot separerade av dubbelkolon. Man kan köra flera relate-kommandon efter varandra och på så sätt länka flera tabeller med den som är inläst med senaste read-kommandot. Ju fler tabeller som relateras desto mer ansträngande för datorn. Även om du kan ha oändligt många tabeller avråds från att samtidigt länka fler än 5-10 st (beroende på din dators internminne och processorhastighet). Nästa gång du kär ett read-kommando bryts länkarna. Begränsningen i antalet samtidiga länkade tabeller är sällan ett problem eftersom man efter en eller ett par analyskommandon kan köra ett read-kommando på den första tabellen och sedan länka andra tabeller varvid man gör andra analyser. Exempel på relate-kommandot:
=====================
RELATE sf36x1_dim_pf UniqueKey::UniqueKey
=====================
RELATE viewPatient famidnum :: famidnum

Kommandon för att bearbeta data och skapa nya variabler

ASSIGN Betyder tilldela det som står till vänster om = värdet av det som står till höger om =. Oftast används ganska enkel matematik, sällan mer avancerat än de fyra räknesätten. Det som står till höger om = måste omges med " om det är text. Man kan börja med ASSIGN eller LET eller så skippar man dessa kommandoord. Exempel på ASSIGN-kommandot:
=====================
ASSIGN County = "Yellow Medicine"
=====================
LET Address = StreetNumber & " " &StreetName &" " & AptNumber
=====================
now = systemtime
=====================
duration = uears(01/01/88, dateonset)
=====================
group = 1 (Om grupp är en numerisk variabel )
=====================
group = "1" (Om grupp är en textvariabel)
=====================
DEFINE Betyder skapa en ny variabel. Man kan se en variabel som varande kolumnen i en tabell där raderna (kallas även poster) är varje registrerad individ (om det nu är individer som man registrerar). Nästa steg är att fylla kolumnen med värden som räknas fram ur de kolumner som fanns tidigare. Define följs alltså nästan alltid av kommandot assign eller recode. Direkt när en ny variabel är skapad med define accepterar den att man fyller den med siffror eller text. Om man första gången fyller variabeln med siffror kan den sedan inte ta emot text (och tvärtom). Om man gör fel får man använda kommandot undefine och sedan göra rätt. Den nya variabeln kan göras så att den lagras permanent eller bara tillfälligt. Om man inte gör annat än att skriva define lagras den tillfälligt vilket innebär att när man avslutar programmet Analyze Data eller kör ett nytt read-kommando försvinner variabeln (såvida man inte genom write-kommandot har skrivit den till en annan datatabell). Om man efter define-kommandot lägger till global sparas värdet tills modulen Analyze Data stängs av. Lägger man till permanent sparas informationen (även om datorn stängs av) till man använder kommandot undefine. Exempel på define-kommandot:
=====================
DEFINE change
=====================
DEFINE totalitems GLOBAL
=====================
DEFINE totalitems PERMANENT
=====================
Endast tillfälliga variabler innehåller vanligen data (ett värde) för varje post/rad i tabellen. Variabler som är globala/permanenta kan bara innehålla ett enda värde.
DELETE Delete-kommandot kan ta bort filer eller datatabeller. Om en datatabell har en koppling till en View (för inmatning av data i tabellen) tas View:n bort samtidigt som tabellen. Används exempelvis när man tar bort datatabeller som tillfälligt lagras data under en databearbetning. Exempel:
=====================
DELETE FILE c:\epi_info\projekt_d.mdb'
=====================
DELETE TABLES temp
IF Innebär att en variabel skall fyllas med data beroende på om vissa villkor är uppfyllda. Kommandot kan kombinera flera olika villkor med olika resultat. Man kan i varje villkor använda AND, OR och NOT. Kommandot avslutas med END. Se exemplet med SF-36 för att se exempel på hur koden skrivs. Om man använder flera (>3-4) IF-kommandon behöver man mellanlagra data i en annan tabell innan man fortsätter. Orsaken till att mellanlagring behövs är en begränsning i Epi-Info. Denna begränsning kringgås alltså lätt genom en mellanlagring. Mellanlagringen görs rent praktiskt genom att man skriver data till en ny datatabell. Därefter läser man in tabellen med rådata igen, länkar till den nya datatabellen och fortsätter. Detta medför några extra rader programkod som enkelt kopieras om förfarandet behöver upprepas. Mellanlagring visas i exemplet med SF-36. Några exempel på IF-kommandon:
=====================
IF (age <30) AND (age > 17) THEN
ASSIGN group = "Young Adult"
END
=====================
IF (diarrhea = (+)) OR (vomiting = (+)) OR \
(fever = (+)) THEN
ASSIGN ill = (+)
ELSE
ASSIGN ill = (-)
END
=====================
ASSIGN ill = (-)
IF vomiting = (+) THEN
ASSIGN ill = (+)
END
IF diarrhea = (+) THEN
ASSIGN ill = (+)
END
IF fever = (+) THEN
ASSIGN ill = (+)
END
=====================
De två sista exemplen åstadkommer exakt samma sak, nämligen att klassificera individen som sjuk om endera av symptomen förekommer. Bakåtslash (\) på första raden i andra exemplet anger att det är en lång rad som fortsätter på nästa rad.
LIST Detta kommando listar upp variablerna i den tabell som är inläst i datorns minne med read-kommandot. Om en * anges efter list listas alla variabler. Om några variabelnamn anges efter kommandot list listas bara dessa.  Normalt listas data som en html-fil i "Analysis Output". Om man sist lägger till GRIDTABLE listas data som en Excel-liknande tabell. Tillägget UPDATE listar data som en tabell där ändringar i data kan göras direkt (fungerar bara om data lagrats i en Epi-Info tabell). Exempel:
=====================
LIST *
=====================
LIST age sex group GRIDTABLE
=====================
LIST * EXCEPT  x01 UPDATE
RECODE Innebär att en variabel skall fyllas med data från en annan variabel på ett speciellt sätt. Kommandot avslutas med END. Om man använder flera (>3-4) korta RECODE-kommandon (eller ett långt) behöver man mellanlagra data innan man fortsätter. Detta beror på en begränsning i Epi-Info. Denna begränsning kringgås lätt genom en mellanlagring. Mellanlagringen görs rent praktiskt genom att man skriver data till en ny datatabell. Därefter läser man in tabellen med rådata igen, länkar till den nya datatabellen och fortsätter. Detta medför några extra rader programkod som enkelt kopieras om förfarandet behöver upprepas. Man kan inte ha mer än 12 nivåer av värden i ett enskilt recode-kommando. Behövs fler får man köra flera recode-kommandon med mellanlagring. Exempel på ett recode-kommando:
=====================
RECODE age TO agegroup
LOVALUE - 10 = "0-10"
10 - 20 = ">10 - 20"
20 - 30 = ">20 - 30"
30 - 40 = ">30 - 40"
40 - 50 = ">40 - 50"
50 - 60 = ">50 - 60"
60 - 70 = ">60 - 70"
70 - 80 = ">70 - 80"
80 - 90 = ">80 - 90"
90 - 100 = ">90 - 100"
100 - HIVALUE = ">100"
END
SELECT Select medför att endast de poster som uppfyller urvalskriterierna används i all fortsatt databearbetning. Ges flera select-kommandon i följd adderas de. Det innebär att de två raderna
SELECT AGE > 35
SELECT SEX = "f"
får samma resultat som en enda rad med kommandot
SELECT (AGE>35) AND (SEX = "f")
För att ta bort urvalsbegräsningen kör man kommandot select utan något efter ordet select. Fler exempel:
=====================
SELECT ((age > 35) and (sex="f")) or ((age > 40) and (sex="m"))
Observera hur man kan använda paranteser i selectuttryck
=====================
SELECT NAME = “mac”
Bara de med det exakta namnet mac (eller MAC) väljs ut.
=====================
SELECT NAME LIKE ”mac*”
De vars namn börjar med mac väljs ut (MacDonald, MacIntosh, etc)
=====================
WRITE Detta kommando kopierar (exporterar) alla variabler och deras innehåll till en annan datatabell. Datatabellen kan vara en annan tabell i en Epi-Info fil. Det kan också vara en helt annan filtyp, exempelvis excelfil, dBase, Foxpro, text, etc. Man kan välja om man skall skriva över den andra tabellen om den finns eller om data läggs till som nya poster. Man kan styra om alla tillgängliga variabler skall exporteras (anges med *) eller bara några. Exempel:
=====================
WRITE APPEND "Epi Info" 'd:\epi_info\demo1.mdb':table1 *
=====================
WRITE APPEND "Epi Info" 'd:\epi_info\demo1.mdb':table1 age sex group
=====================
WRITE APPEND "Epi Info" 'd:\epi_info\demo1.mdb':test1 * EXCEPT bohid boh aliennumber
=====================
WRITE REPLACE "Excel 4.0" 'C:\Epi_Info\projekt_a.xls' *
=====================

Kommandon för att presentera / räkna statistik

FREQ Används för att ta presentera procentuella fördelningar. Efter kommandot freq kommer den variabel man vill ha fördelningen för. Om variabeln är binär ges även konfidensintervall. Exempel:
=====================
FREQ ill
=====================
FREQ blodgroup
MEANS Används för att ta fram medelvärde och median och passande spridningsmått. Efter kommandot means kommer den variabel man vill ha medelvärdet för. Om man efter den variabeln anger en andra variabel som härbärgerar gruppindelningen så ger means medel och median separat för grupperna och dessutom görs en signifikansanalys där sannolikheten för att man har fel när man påstår att grupperna skiljer sig åt beräknas (det så kallade p-värdet). P-värdet räknas fram med både parametriska och icke parametriska statistiska metoder. Den parametriska metoden som används är one way anova vilket för två grupper är detsamma som t-test. Den icke parametriska metoden är Kruskal-Wallis one way analysis of variance vilket för två grupper är detsamma som Mann-Whitney's U-test. Eftersom programmet självt omöjligt kan veta om siffror representerar en kvantitativ eller kvalitativ variabel måste man själv avgöra om man skall använda resultatet framräknat med parametrisk eller icke parametrisk metod. Mellan resultatet framräknat med anova respektive Kruskal-Wallis presenteras Bartlett's test som testar om spridningen är ungefär lika i grupperna. Detta är nämligen ett av kraven för att få göra anova / Student's t-test. Exempel på detta kommando.
=====================
MEANS change
=====================
MEANS change group
LOGISTIC Detta kommando gör en enkel eller multipel logistisk regression. Om man vill se hur en binär variabel samvarierar med en annan binär variabel ger kommandot tables samma resultat. Vill man se hur en binär variabel samvarierar med flera andra variabler är kommandot logistic lämpligt. De oberoende variablerna kan vara både kvantitativa respektive kvalitativa. Kommandot har möjlighet att använda dummyvariabler, multipla interaktioner och viktning av varje ingående post. Exempel:
=====================
LOGISTIC grupp = age (sex) lakare vc omrade WEIGHTVAR = viktning
=====================
Mer om logistic-kommandot hittar du på sidan om logistisk regression
REGRESS Detta kommando gör en enkel eller multipel regression. Minsta kvadratmetoden används för att bestämma koefficienter. Kommandot har möjlighet att använda dummyvariabler, multipla interaktioner och viktning av varje ingående post. Exempel:
=====================
REGRESS diagnoses_per_visits_patients = age_gp
=====================
REGRESS diagnoses_per_visits_patients = age_gp (sex_gp) age_pat (sex_pat) diagnoses_per_visits_gps
=====================
REGRESS lakare = age (sex) (grupp) vc omrade WEIGHTVAR = viktning
=====================
Mer om regress-kommandot hittar du på sidan om multipel linjär regression
TABLES Används för att jämföra procentuella fördelningar mellan grupper. Efter kommandot tables kommer den variabel man vill ha fördelningen för. Om man efter den variabeln anger en andra variabel som härbärgerar gruppindelningen så ger tables fördelningen separat för grupperna och dessutom görs en signifikansanalys där sannolikheten för att man har fel när man påstår att grupperna skiljer sig åt beräknas (det så kallade p-värdet). P-värdet räknas fram med icke parametriska statistiska metoder. Vid 2x2-tabell levereras odds ratio, relativ risk, chitvå-test samt Fisher's exakta test. Vid en större tabell än 2x2 levereras enbart chitvå. Man kan även göra flera 2x2-tabeller och få en sammanställning av dem. Används när man vill se om en viss variabel interagerar. Exempel:
=====================
TABLES ill group
=====================
TABLES ill group STRATAVAR=sex
=====================
I första exemplet vill vi se om två olika grupper skiljer sig åt i andelen sjuka individer. I sistnämnda exemplet vill man se om kön interagerar med hur de två grupperna är sjuka. Ett alternativ vore att istället göra logistisk regression.

Kommandon för att styra var resultatet hamnar

ROUTEOUT Innebär att resultatet av alla kommandon som normalt ger ett resultat på bildskärmen (freq, tables, means regress, etc) lagras i en fil med det namn som anges efter kommandot. Filen kommer att ha filformatet html vilket kan läsas dels av varje webbläsare men även av de flesta ordbehandlare, exempelvis Word. Detta är praktiskt om man vill göra många analyser och sedan läsa en utskrift i lugn och ro. Skriver man replace efter raderas filen först om den redan finns. Skriver man inte replace lagras resultaten sist i filen. För att sluta skriva data i en fil körs man kommandot closeout. Exempel:
=====================
ROUTEOUT 'cts_statistik' APPEND
=====================
ROUTEOUT 'cts_statistik' REPLACE
CLOSEOUT Om man har kört kommandot routeout så gör kommandot closeout att man slutar skriva resultat till en resultatfil. Resultatet syns därefter enbart på bildskärmen.

 


Åter till innehållsförteckningen för Epi-Info


Denna webbsida är författad av
Doc. Ronny Gunnarsson
Distriktsläkare/Familjeläkare

Läs om regler för ansvar och copyright som gäller för denna webbsida.