• No results found

Bootstrapvalidering av konfidensintervall för ett standardiserat mått för att jämföra behandlingsbenägenhet mellan sjukhus

N/A
N/A
Protected

Academic year: 2021

Share "Bootstrapvalidering av konfidensintervall för ett standardiserat mått för att jämföra behandlingsbenägenhet mellan sjukhus"

Copied!
45
0
0

Loading.... (view fulltext now)

Full text

(1)

Bootstrapvalidering av konfidensintervall för ett standardiserat

mått för att jämföra behandlingsbenägenhet mellan sjukhus

Trude Warner

U.U.D.M. Project Report 2003:13

Examensarbete i matematisk statistik, 20 poäng Handledare: Johan Lindbäck, UCR, Uppsala universitet

Examinator: Dag Jonsson Oktober 2003

(2)

Sammanfattning

RIKS-HIA är ett nationellt kvalitetsregister för hjärtintensivvården i Sverige. Det omfattar samtliga patienter som vårdas på deltagande sjukhus hjärtintensivvårdsavdelning. Av Sveriges 81 sjukhus deltar idag 77 stycken. I och med registret är det lätt att följa upp hur sjukhusen behandlar sina patienter. Trots att Socialstyrelsen har gett ut nationella riktlinjer för vård av hjärtpatienter har det observerats skillnader mellan sjukhus. För att ta reda på vad dessa skillnader beror på gjordes en registerstudie på åren 1999-2000. Man kom fram till att när det gäller relativt nya behandlingar och behandlingar som kräver en viss utrustning som inte finns tillgänglig överallt, så skiljer sig sjukhusen åt.

I den statistiska analysen gjordes vissa antaganden för att ta fram variansen av ett mått på sjukhusens behandlingsstrategi. Man tog även fram konfidensintervall för detta mått. Syftet med denna uppsats var att testa hur bra skattade dessa konfidensintervall och varianser är.

(3)

Förord

(4)

Innehållsförteckning

1 INLEDNING... 2

2 BAKGRUND ... 3

3 DATA-KONTROLL OCH SAKNADE-VÄRDEN-MÖNSTRET ... 7

4 TEST AV ANTAGANDEN ... 12 4.1 BOOTSTRAP... 12 4.2 KONFIDENSINTERVALLEN... 15 4.3 VAR[LN(STRJT)] ... 17 4.4 VAR[OJT]... 20 4.5 VAR[EJT] ... 23 4.6 COV(OJT,EJT) ... 26 5 DISKUSSION ... 27 6 REFERENSER... 29 7 BILAGOR... 30 7.1 BILAGA 1. KONFIDENSINTERVALL... 30

7.2 BILAGA 2. FÖRDELNINGEN ÖVER LN(STRJT*)... 33

(5)

1 Inledning

I Sverige uppgår varje år vården av patienter med hjärtinfarkt eller hotande hjärtinfarkt till en kostnad av 1.5 miljarder kronor. Till det kommer kranskärlsingrepp eller ballongvidgning för en kostnad av 1 miljard årligen [1].

RIKS-HIA är ett nationellt kvalitetsregister för hjärtintensivvården sedan första januari 1995 och står för Register of Information and Knowledge about Swedish Heart Intensive care Admission. Registret omfattar samtliga patienter som vårdas på hjärtintensivvårdsavdelning på deltagande sjukhus, som idag är uppe i 77 stycken av Sveriges 81. Registret skapades av professor Lars Wallentin, Akademiska sjukhuset i Uppsala och Ulf Stenestrand, kardiolog på Linköpings Universitetssjukhus. Det drivs och utvecklas idag av UCR med ekonomiskt stöd från Socialstyrelsen och Landstingsförbundet samt i samarbete med Svenska

Kardiologföreningen. Syftet med registret är att utveckla den akuta hjärtsjukvården genom ökad kunskap om vårdbehov, vårdinsatser och behandlingsresultat [2].

Registret består av fyra dataformulär; ett för personuppgifter, ett för intagning, där bl.a. mediciner och EKG vid ankomst förs in, ett för vårdförlopp och slutligen ett för fortsatt vård och utskrivning, där bl.a. mediciner och EKG vid utskrivning förs in. Varje vårdtillfälle utgör en post så samma patient kan förekomma flera gånger.

Uppföljning av registreringen görs genom att en monitor åker ut till sjukhuset och jämför ett slumpmässigt urval av poster i registret med respektive journal.

Det förekommer att värden saknas i registret och saknade värden såväl som fel ifyllda värden kan påverka kvaliteten. Andelen saknade och fel ifyllda värden i RIKS-HIA är dock ganska låg, ca 7.4%.

Trots de nationella riktlinjerna som Socialstyrelsen har gett ut om vård av hjärtpatienter har man observerat skillnader mellan sjukhus i andelen patienter som får en viss behandling. För att ta reda på om detta kan bero på skillnad i patientkaraktäristika eller behandlingsstrategi gjordes under 1999-2000 en registerstudie på RIKS-HIA av UCR och Universitetssjukhuset i Linköping [3]. Studien omfattade patienter som fått diagnosen hjärtinfarkt och som vårdats på sjukhus med minst 20 patienter under 1999-2000. Totalt var det 67 sjukhus och 32 886

(6)

I den statistiska analysen gjordes en del antaganden och syftet med denna uppsats är att testa rimligheten i dessa samt att titta på mönstret hos de saknade värdena.

2 Bakgrund

I registerstudien jämfördes användandet av fyra akuta behandlingar, två

undersökningsmetoder och fyra mediciner vid utskrivning (se Tabell 1). Dessa tio

behandlingar var responsvariabler i studien. En responsvariabel kallas också för en beroende variabel då dess värde antas bero av värdet på en eller flera förklarande eller oberoende variabler. För att korrigera för skillnader i patientkaraktäristika inkluderades 25 oberoende variabler i analysen (se Tabell 2). Dessa valdes ut av Ulf Stenestrand och Lars Wallentin och är vad de anser att en läkare tar hänsyn till när denne bestämmer vilken behandling patienten ska få.

För var och en av de tio responsvariablerna räknades ett så kallat propensity score ut för varje patient. I denna studie är det sannolikheten att få behandling beroende av vad man har för vektor av förklarande variabler,Xij, men oberoende av vilket sjukhus man vårdas på. För mer detaljerad läsning om propensity score hänvisas till Rosenbaum & Rubin [4].

Sannolikheten skattades genom att använda logistisk regressionsanalys. Låt

Yijt=    t behandling får ej j sjukhus på i patient om 0 t behandling får j sjukhus på i patient om 1 i=1,2,…,nj, j=1,2,….,67, t=1,2,…,10

Om alla sjukhus har samma behandlingsstrategi gäller att Yijt|Xij∈Bernoulli(πijt) och

Var[Yijt|Xij]= πijt(1-πijt). Här är πijt = propensity score = sannolikheten att patient i på sjukhus j får behandling t. Förväntat antal behandlade patienter på varje sjukhus ges då av

Ejt=

= j n i ijt 1 π

(7)

Ojt=

.

= j n i ijt Y 1

Om man vidare antar att Yijt|Xij och Yi’jt|Xij är oberoende för varje i≠i’ gäller att

Var[Ojt] = Var[ ] = = . (1) 1 | j n ijt ij i Y X =

1 Var[ | ] j n ijt ij i Y X =

= − j n i 1 ijt ijt ) 1 ( π π

För att jämföra observerat antal behandlade patienter med förväntat beräknades i registerstudien statistikan STR (standardised treatment ratio) som är kvoten av de två.

STRjt= jt jt E O (2)

När STRjt =1, behandlar sjukhuset lika många patienter som förväntat utifrån hur deras

patienter ”ser ut”. Är STRjt <1 behandlar de färre och är STRjt>1 behandlar de fler än förväntat.

Eftersom det förekommer slumpmässig variation togs inte bara en punktskattnig av STRjt fram utan även ett konfidensintervall. För att beräkna ett approximativt konfidensintervall för en kvot är det oftast praktiskt att först logaritmera. Man minskar dessutom skevheten i

fördelningen. ln( ) ln jt ln( ) ln( ) jt jt jt jt O STR O E E   = = −   (3) Väntevärde och varians för detta uttryck skattades med Gauss approximationsformler [5]. Låt g(X)=ln        jt jt E O där X=  och låt A=E[X]= .     jt jt E O       ] [ ] [ jt jt E E O E

Taylorutveckling av g(X) kring A ger

T

( ) ( ) '( ) *( )

g X =g A +g A XA + , R

(8)

T E[ ] E[ ( )] ( ) '( ) *( ) ( ) ln ln(E[ ]) ln(E[ ]) E[ ] jt jt jt jt O g X g A g A A A g A O E E   ≈ + − = = = −   Vidare blir = T Var[ ( )]g Xg X'( ) *Var[ ]* '( )X g A E[ ] E[ jtjt] jt E[ ] E[ jtjt] O jt O E E g g O E   ∂ ∂         Var[ ] Cov( , Cov( , ) Var[ jt jt jt jt O O O E ) ] jt jt E       E E[E[ ]] E[ ] E[ ] jt jt jt jt O jt E O jt E g O g E    ∂         ∂      =Var[Ojt]* 2 E[ ] E[ jtjt] O jt E g O   ∂    ∂      +Var[Ejt]* 2 E[ ] E[ jtjt] O jt E g E   ∂ ∂         +2*Cov(Ojt,Ejt)* E[ ] E[ jtjt] O jt E g O   ∂ ∂         * E[ ] E[ jtjt] O jt E g E   ∂ ∂         =Var[Ojt]* 2 1 E[Ojt]      +Var[Ejt]* 2 1 E[Ejt]   −      +2*Cov(Ojt,Ejt)* E[1 ] jt O         * E[1 ] jt E   −       = Var[Ojt]* 2 1         jt E +Var[Ejt]* 2 1       jt E   -2*Cov(Ojt, Ejt)* 2 1       jt E   (4)

I registerstudien antogs att alla πijt var bestämda med tillräcklig hög precision för att kunna sägas vara fixa. Det skulle i sin tur leda till att Ejt= är fix och följaktligen att

Var[E

= j n i ijt 1 π

jt]=0, samt att Cov(Ojt,Ejt)=0. Då skulle (4) bli

2 1 ( )] Var[ jt]* jt g X O E   =    Var[ . Sammanfattningsvis blir då

E[ln(STRjt)] ≈ ln(E[Ojt])-ln(E[Ejt]) och Var[ln(STRjt)] ≈ 2 1         jt E *Var[Ojt]= 

= (5) − = −       j nj i ijt ijt n i ijt 1 2 1 ) 1 ( * π π π

(9)

ln(STRjt)±λα/ 2* Var[ln(STRjt)] , (6) där λα/2 är α/2 percentilen i en standardiserad normalfördelning.

(10)

3 Data-kontroll och saknade-värden-mönstret

Innan rimligheten i antagandena testades, kontrollerades datat. För responsvariablerna tog vi för varje behandlingsvariabel fram hur många som fått respektive behandling och hur många saknade värden respektive behandlingsvariabel har. Samma sak gjordes för de oberoende variablerna.

Tabell 1. Responsvariablerna med antal och andel behandlade samt antal och andel saknade värden på respektive variabel. Andel behandlade är uträknad innan korrigering gjorts för saknade värden .

Responsvariabel Antal (%) N=32886 Antal saknade (%)

Akuta behandlingar:

Intravenös nitroglycerin 12078 (36.7) 1793 (5.5)

-vidgar blodkärlen

Intravenös β-blockerare 10516 (32.0) 1389 (4.2)

-sänker hjärtfrekvens och blodtryck

Intravenös heparin 16465 (50.1) 1197 (3.6)

-förhindrar blodkoagulation

Akut reperfusionbehandling 9929 (30.2) 455 (1.4)

-återupprättandet av blodflödet i hjärtmuskulaturen

Undersökningsmetoder: ekokardiografi 16096 (48.9) 0 (0) -ultraljudsundersökning av hjärtat koronarangigrafi 7220 (22.0) 0 (0) -kranskärlsröntgen Utskrivningsmediciner:

ACE-hämmare eller AII-blockerare 12638 (38.4) 2364 (7.2)

-blodtryckssänkande och kärlvidgande

Acetylsalicylsyra eller antikoagulantia 27845 (84.7) 2153 (6.6)

-minskar benägenhet för blodpropp

β-blockerare 24327 (74.0) 2185 (6.6)

-se ovan

lipidsänkare 12813 (39.0) 2393 (7.3)

(11)

Tabell 2. Oberoende variabler. För ålder redovisas medianåldern samt den 10:e och 90:e percentilen. För

variabeln kön är det antal och andel män som redovisas. För övriga är det antal och andel som fått behandling. Dessutom redovisas antal och andel saknade värden för respektive variabel.

Oberoende variabler Antal(%) Antal saknade(%)

Ålder, median (10:e, 90:e) 74 (54,9) 2 (0.006)

Kön (män) 20942 (63.7) 0 (0) Rökare 6379 (19.4) 3110 (9.5) Tidigare reperfusionbehandling 3033 (9.2) 1190 (3.6) Tidigare hjärtinfarkt 10791 (32.8) 1029 (3.1) Hjärtsvikt på avdelning(lungrassel) 13268 (40.4) 1074 (3.3) Diabetes 7346 (22.3) 440 (1.3) Högt blodtryck 11298 (34.4) 1264 (3.8)

Cirkulationsstillestånd som intagningsorsak 327 (0.99) 0 (0) Importerade från andra register: Huruvida patienten

lider/har lidit av

Stroke 4365 (13.3) 0 (0)

Njursvikt 808 (2.5) 0 (0)

Kronisk obstruktiv lungsjukdom 2491 (7.6) 0 (0)

Demens 122 (0.37) 0 (0)

Cancer de senaste tre åren 1266 (3.9) 0 (0)

Hjärtsvikt 9366 (28.5) 0 (0)

Mediciner vid ankomst:

ACE-hämmare el. AΙΙ-blockerare 6481 (19.7) 923 (3.8)

Antiarytmika 373 (1.1) 980 (3.0) -Reglerar hjärtrytmen Antikoagulantia 2279 (6.9) 943 (2.9) Acetylsalicylsyra 14157 (43.1) 836 (2.5) β-blockerare 12744 (38.8) 868 (2.6) Kalciuminhibitorer 5550 (16.9) 963 (2.9) - kärlvidgande Digitalis 2777 (8.4) 953 (2.9)

-Motverkar hjärtsvaghet och sänker hjärtfrekvensen

Diuretika 21544 (65.5) 890 (2.7)

-vätskedrivande

Långtidsverkande nitrater 23919 (72.7) 932 (2.8)

-Vidgar vener och artärer

(12)

För att se om det finns något mönster hos de saknade värdena för de oberoende variablerna summerades antalet saknade värden för dessa. Hur detta antal fördelade sig visas i

histogrammet nedan. FREQUENCY 0 1000 2000 3000 NMISS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Figur 1. Fördelning över antal saknade värden hos varje observation. X-axeln visar antal saknade värden.

Y-axeln visar antal observationer i varje “grupp” av saknade värden.

Variablerna stroke, njursvikt, kronisk obstruktiv lungsjukdom (KOL), demens, cancer de senaste tre åren och tidigare hjärtsvikt är importerade från andra register. Antingen finns patienten med i respektive register eller inte, så dessa variabler har inte ett enda saknat värde. Utöver dessa är det bara variablerna kön och cirkulationsstillestånd som intagningsorsak som inte har något saknat värde. Variabeln cirkulationsstillestånd fås ur variabeln intagningsorsak i RIKS-HIA. Denna variabel måste fyllas i för att komma vidare i dataformuläret och det förklarar varför den inte har några saknade värden. Då återstår 17 variabler som har saknade värden.

(13)

på samma ställe i RIKS-HIA och fattas det uppgift om en av dessa så fattas det ofta uppgift om alla.

Sedan plockades de observationer som har 11 saknade värden ut och av dessa hade 80 % sina saknade på de tio ankomstmedicinerna plus variabeln för hjärtsvikt på avdelning.

Av de variabler som hade 15 saknade värden hade 59 % dem på de tio ankomstmedicinerna, tidigare reperfusionsbehandling, tidigare hjärtinfarkt, högt blodtryck, diabetes och rökare.

Alla observationer med 16 saknade värden hade dessa på ovanstående plus hjärtsvikt på avdelning. Detta kan förklaras av att i de fall med 16 saknade värden har registreringen, utöver personnummer, inte genomförts alls. Det kan t.ex. ha visat sig att patienten inte led av en akut hjärtsjukdom som misstänktes från början. Ålder och kön är variabler som fås från patientens personnummer och ska aldrig vara saknade. Ålder saknas i två fall och i dessa saknas även alla övriga variabler vilket förklarar stapeln vid 17. Utöver de variabler som aldrig ska vara saknade återstår 16 stycken och därför den relativt stora stapeln där.

Man skulle kunna tänka sig att andelen saknade värden skulle vara beroende av hur stort sjukhuset är; att ett större sjukhus skulle ha bättre resurser eller rutiner för att fylla i registret. För att kontrollera detta beräknades medelvärdet av antalet saknade värden för varje sjukhus och plottades mot antalet patienter under 1999-2000 på respektive sjukhus.

Nr. 61 Nr. 51 0 0,5 1 1,5 2 2,5 3 3,5 4 4,5 5 0 100 200 300 400 500 600 700 800

antal vårdade hjärtpatienter under 99-00

medelvärdet av antal saknade värden

Figur 2. Relationen mellan medelvärdet av antal saknade värden hos varje observation och antal vårdade

(14)

Inget samband mellan sjukhusstorlek och antal saknade värden kan utläsas ur plotten. Det är två sjukhus som utmärker sig; de som i studien har nummer 51 och 61. För att se om det finns någon relation mellan de två åren plottades medelvärdet av antal saknade värden 1999 mot medelvärdet av antal saknade värden 2000.

Nr. 61 Nr. 51 0 1 2 3 4 5 6 0 1 2 3 4 5

medelvärdet av antal saknade värden år 2000

medelvärdet av antal

saknade värden år 1999

6

Figur 3. Relationen mellan år 1999 och 2000 när det gäller medelvärdet av antal saknade värden.

Man kan se att det finns en relation. De sjukhus som ligger lågt det ena året ligger även lågt det andra och tvärtom. Ett undantag är sjukhus nummer 51, som ligger ovanligt högt år 1999 men normalt året därpå. Sjukhus nummer 61 ligger ovanligt högt båda åren.

(15)

4 Test

av

antaganden

För att testa antagandena behöver vi någonting att jämföra dem med.

Låt oss säga att vi har ett stickprov, x=(x1, x2, . . . , xn), från en okänd fördelning F. Vi är intresserade av en statistika θ=t(F) och skattar den med =t(x). Ibland kan det vara svårt eller t.o.m. omöjligt att analytiskt bestämma fördelningen eller variansen för den statistikan. Med hjälp av en statistisk metod som kallas Bootstrap kan man dock ta reda på dessa och det är den metoden vi har använt oss av.

θ

4.1 Bootstrap

Bootstrap introducerades 1979 som en dator-baserad metod att skatta standardavvikelsen för . En bra introduktion till metoden ges av Efron & Tibshirani [6]. Namnet kommer från uttrycket ”to pull oneself up by one’s bootstrap” som tros komma från baron Münchhausens äventyr.

θ

Bootstrap går ut på att man genererar flera stickprov utifrån det stickprov man har. Detta görs genom att dra med återläggning från stickprovet. Om vi tar vårt stickprov, x=(x1, x2, . . . ,xn), så generar vi ett bootstrapstickprov, x*=(x1*, x2*, …, xn*), där t.ex. x1*=x2, x2*=x5, x3*=x2, x4*=x8,… , xn*=x5. D.v.s. i varje bootstrapstickprov kan samma individ förekomma en gång, flera gånger eller inte alls.

För att ta fram bootstrapskattningen av standardavvikelsen för gör man på följande vis: θ∧ • Man generar B stycken oberoende stickprov x1*, x2*, . . . , xB* genom att dra med

återläggning bland de värden man har.

• I varje stickprov beräknar man fram den statistika man är intresserad av. ∧

θ1*=t(x1*), θ∧2*=t(x2*), . . . , θ∧B*=t(xB*).

• Sedan beräknas standardavvikelsen enligt:

(

)

= • − B i i B 1 2 * * ˆ ˆ 1 θ θ , där θˆ•*= B B i i

=1 * ˆ θ

(16)

Bootstrap

1 2 3 4 5 6 7 8 9 10 11 . . . 3 67 4 1 3 25 13 2 8 7 19 20 . . . 56 32 1 23 18 2 13 5 10 32 2 26 . . . 2 4 67 29 18 6 16 1 1 28 23 1 . . . 6 78 9 54 43 21 7 9 47 38 89 3 . . . 75 46 8 12 11 2 7 19 27 58 1 5 . . .

. . .

Genererar nya stickprov genom att dra med återläggning från originalet

Ô1* Ô 2* Ô3* Ô4* Ôn * Var(Ô*) Ô Var(Ô)

Figur 4. En illustration av hur Bootstrap fungerar.

(17)

a) intravenös beta-blockerare 0 0,2 0,4 0,6 0,8 1

sjukhus sorterade efter observerad andel

andel

b) ACE-hämmare som utskrivningsmedicin

0 0,2 0,4 0,6 0,8 1

sjukhus sorterade efter observerad andel

andel

c) acetylsalicylsyra eller antikoagulantia som utskrivningsmedicin

0 0,2 0,4 0,6 0,8 1

sjukhus sorterade efter observerad andel

andel

(18)

4.2 Konfidensintervallen

Ett konfidensintervall för ln(STR) togs fram m.h.a. bootstrap och jämfördes med (6).

Detta gjordes genom att 9 999 bootstrapstickprov drogs från varje sjukhus1. I varje stickprov beräknades ln(STRjt*)=ln(Ojt*)-ln(Ejt*) inom varje sjukhus. Ejt* erhölls genom att i varje stickprov räkna ut nya propensity score som summerades. Stickproven sorterades sedan efter stigande värde på ln(STRjt*) inom varje sjukhus. För att alla konfidensintervall tillsammans skulle täcka det sanna värdet med önskad konfidensgrad justerades intervallen med en Bonferroni korrigering och ett värde, αjust, erhölls. Denna fås ur formeln 1-α=(1-αjust)k, där 1-α är önskad konfidensgrad och k är antalet intervall som här också är antalet sjukhus.

Sedan togs den 9 999*(αjust/2):e och den 9 999*((1-αjust)/2):e percentilen i den empiriska fördelningen fram inom varje sjukhus. För varje sjukhus beräknades dessutom medelvärdet av ln(STR*).

De skattade konfidensintervallen beräknade på originalstickprovet jämfördes med bootstrap-konfidensintervallen. Se fig. 6 nedan och bilaga 1.

Konfidensintervallen överensstämmer relativt väl. I vissa fall är bootstrap-intervallen bredare, i andra smalare.

Vid beräkningen av konfidensintervallen antogs att ln(STRjt) är normalfördelat. Detta kontrollerades genom att rita upp fördelningen av ln(STRjt*) från de 9 999 stickproven för

varje sjukhus och behandling. I bilaga 2 visas ett urval av dess fördelningar.

Normalfördelningsantagandet ser ut att stämma för de flesta sjukhus. De sjukhus som inte visar på en normalfördelning är små sjukhus.

Även om konfidensintervallen ser ut att stämma bra kan det vara över- och underskattningar som tar ut varandra. Därför går vi nu vidare och tittar på de övriga antagandena. Vi börjar med att titta närmare på antagandet om Var[ln(STRjt)].

(19)

a) intravenös beta-blockerare 1-20 -3 -2,5 -2 -1,5 -1 -0,5 0 0,5 1 1,5 sjukhus ln (S T R )

b) ACE-hämmare som utskrivningsmedicin

-1,2 -1 -0,8 -0,6 -0,4 -0,2 0 0,2 0,4 0,6 0,8 sjukhus ln (S T R )

c) acetylsalicylsyra eller antikoagulantia som utskrivningsmedicin

-0,2 -0,15 -0,1 -0,05 0 0,05 0,1 0,15 0,2 0,25 sjukhus ln (S T R )

Figur 6. Konfidensintervall för ln(STRjt). Det första i varje par är beräknat enligt formel (6), det andra är

(20)

4.3 Var[ln(STR

jt

)]

I studien antogs att ln(STRjt) är normalfördelat samt att Var[ln(STRjt)] ≈

= − = −       j nj i ijt ijt n i ijt 1 2 1 ) 1 ( * π π π

Normalfördelningsantagandet är kommenterat i föregående stycke och det stämmer för de flesta sjukhus. Då återstår att testa det andra antagandet.

I de 9 999 bootstrapstickprov som drogs för att ta fram konfidensintervall beräknades även variansen för ln(STRjt*) inom varje sjukhus. Denna jämfördes med variansen för ln(STRjt), beräknad enligt (5) på originalstickprovet. En jämförelse gjordes genom att

standardavvikelserna plottades mot varandra. För att få en bättre överblick av hur mycket det skiljer beräknades även kvoten av standardavvikelsen från bootstrapstickprovet genom den beräknade standardavvikelsen på originalstickprovet.

Vi ser att variansen för ln(STRjt), beräknad enligt (5), stämmer väl överens med

bootstrapvarianserna. Inte helt oväntat eftersom konfidensintervallen stämmer så pass bra. Variansformeln med vilken variansen av ln(STRjt) beräknas ser ju ut som

Var[ln(STRjt)]= 2 1 1 (1 )* j j n n

ijt ijt ijt

i i π π π − = =   −   

 = Var[Ojt]* 2 1       jt E  

(21)

a) intravenös beta-blockerare 0 0,05 0,1 0,15 0,2 0,25 0,3 0,35 0,4 0 0,05 0,1 0,15 0,2 0,25 0,3 0,35 0,4 Bootstrapstandardavvikelse ber äk nad s tandar dav vi ke ls e

b) ACE-hämmare som utskrivningsmedicin

0 0,05 0,1 0,15 0,2 0,25 0,3 0,35 0,4 0 0,05 0,1 0,15 0,2 0,25 0,3 0,35 0,4 Bootstrapstandardavvikelse be rä kn ad s tandar dav vi ke ls e

c) acetylsalicylsyra eller antikoagulantia som utskrivningsmedicin

0 0,01 0,02 0,03 0,04 0,05 0,06 0 0,005 0,01 0,015 0,02 0,025 0,03 0,035 0,04 0,045 0,05 Bootstrapstandardavvikelse ber äk nad s tan dar da vv ik el se

(22)

a) intravenös beta-blockerare 0 0,5 1 1,5 2 2,5

sjukhus sorterade efter kvot

kvo

t

b) ACE-hämmare som utskrivningsmedicin

0 0,2 0,4 0,6 0,8 1 1,2 1,4 1,6

sjukhus sorterade efter kvot

kv

ot

c) acetylsalicylsyra eller antikoagulantia som utskrivningsmedicin 0 0,2 0,4 0,6 0,8 1 1,2 1,4 1,6

sjukhus sorterade efter kvot

kvo

t

(23)

4.4 Var[O

jt

]

Som vi tidigare beskrivit bygger variansformeln för Ojt dels på antagandet att

sannolikheterna, πijt, är bestämda med tillräcklig hög precision för att dessa ska kunna sägas vara fixa, och dels på antagandet att behandlingsvariablerna Yijt och Yi’jt är oberoende för varje i i≠ ' .

Vi tog fram bootstrapvariansen av Ojt genom att i var och ett av de tidigare dragna 9 999 stickproven summera antalet behandlade patienter inom varje sjukhus så att vi erhöll

Ojt1*, Ojt2* ,Ojt 3*,…., Ojt9999* j=1,…,67 , t=1,…,3.

Därefter beräknades variansen för Ojt* inom varje sjukhus och denna jämfördes med variansen för Ojt beräknad enligt (1). Jämförelsen gjordes genom att de båda

standardavvikelserna plottades mot varandra. För att få en bättre överblick beräknades som tidigare kvoten mellan standardavvikelsen i bootstrapstickprovet och standardavvikelsen i originalstickprovet.

(24)

a) intravenös beta-blockerare 0 5 10 15 20 25 0 5 10 15 20 25 Bootstrapstandardavvikelsen be rä kn ad s tan dar dav vi ke ls e

b) ACE-hämmare som utskrivningsmedicin

0 2 4 6 8 10 12 14 16 18 20 0 2 4 6 8 10 12 14 16 18 20 Bootstrapstandardavvikelse be rä knad s tand ar dav vi ke ls e

c) acetylsalicylsyra eller antikoagulantia som utskrivningsmedicin

(25)

a) intravenös beta-blockerare 0 0,2 0,4 0,6 0,8 1 1,2

sjukhus sorterade efter kvot

kv

ot

b) ACE-hämmare som utskrivningsmedicin

0 0,2 0,4 0,6 0,8 1 1,2 1,4

sjukhus sorterade efter kvot

kvo

t

c)acetylsalicylsyra eller antikoagulantia som utskrivningsmedicin 0 0,2 0,4 0,6 0,8 1 1,2 1,4 1,6

sjukhus sorterade efter kvot

kvo

t

Figur 10. Kvoten mellan standardavvikelsen av Ojt* och standardavvikelsen av Ojt , beräknad med den antagna

(26)

4.5 Var[E

jt

]

Hela variansformeln för ln(STRjt) ser ut som: Var[Ojt]* 2 1         jt E +Var[Ejt]* 2 1       jt E   -2*Cov(Ojt, Ejt)* 2 1       jt E  

I studien antogs att både Var[Ejt] och Cov(Ojt,Ejt) var noll så att vi fick den förenklade variansformeln (5).

För att kontrollera antagandet om att Var[Ejt]=0 summerades alla propensity scores inom sjukhus i var och ett av de 9 999 dragna stickproven så att vi erhöll

Ejt1*, Ejt2* ,Ejt 3*,…., Ejt9999* j=1,…,67 , t=1,…,3.

Sedan beräknades variansen över Ejtb* inom varje sjukhus. Variansen av Ejt behöver inte vara exakt noll, bara den är tillräckligt mycket mindre än variansen av Ojt för att kunna bortses från i variansformeln (4). Vi gjorde en jämförelse mellan bootstrapvarianserna av Ojt*

och Ejt* genom att de plottades i samma graf för varje sjukhus. Dessutom beräknades kvoten av standardavvikelsen av Ojt* genom standardavvikelssen av Ejt*.

(27)

a) intravenös beta-blockerare 0 50 100 150 200 250 sjukhus va ria ns

bootstrapvariansen avOjt* bootstrapvariansen av Ejt*

b) ACE-hämmare som utskrivningsmedicin

0 50 100 150 200 250 300 350 sjukhus va ria ns

bootstrapvariansen av Ojt* bootstrapvariansen av Ejt* c) acetylsalicylsyra eller antikoagulantia som utskrivningsmedicin

0 20 40 60 80 100 120 140 sjukhus va rians

(28)

a) intravenös beta-blockerare 0 1 2 3 4 5 6

sjukhus sorterade efter kvot

kvo

t

b) ACE-hämmare som utskrivningsmedicin

0 0,5 1 1,5 2 2,5 3 3,5

sjukhus sorterade efter kvot

kv

ot

c) acetylsalicylsyra eller antikoagulantia som utskrivningsmedicin

0 1 2 3 4 5 6

sjukhus sorterade efter kvot

kvo

t

(29)

Tabell 3. Kovarianser mellan observerat antal behandlade och förväntat antal behandlade för de tre olika

behandlingarna och för 20 av de 67 sjukhusen.

Sjukhus Cov(Ojt*, Ejt*) , t=intravenös

β-blockerare Cov(Ojt*, Ejt*), t=ACE-hämmare som utskrivningsmedicin Cov(Ojt*, Ejt*), t=acetylsalicylsyra eller antikoagulantia som utskrivningsmedicin 1 4.115 21.388 0.4800 3 0.201 1.742 0.0003681 10 4.584 19.225 2.368 14 5.338 20.556 1.057 20 2.171 6.733 1.157 25 9.007 32.175 2.533 31 1.892 13.584 3.037 35 0.483 1.664 0.02038 39 0.926 4.465 0.2403 40 3.126 10.589 0.6782 41 3.129 7.833 0.2763 46 1.160 4.227 0.1765 51 2.205 12.170 1.290 53 2.242 8.188 0.9483 54 3.336 17.605 1.299 59 22.736 61.938 10.468 64 13.821 29.338 5.434 70 3.301 13.957 1.220 74 -0.193 0.923 -0.008843 77 0.748 8.827 0.2264

4.6 Cov(O

jt

,E

jt

)

(30)

beräknades kovariansen dem emellan för varje behandling och sjukhus. För en del sjukhus och behandlingar är kovariansen i princip noll, men för de allra flesta är den betydligt skiljd från noll. I tabell 3 visas ett urval av 20 sjukhus.

5

Diskussion

Syftet med denna uppsats var främst att testa rimligheten i beräknade konfidensintervall genom att jämföra dem med konfidensintervall framtagna med hjälp av bootstrap. Det visade sig att de stämde relativt väl.

Vi gick ändå vidare i analysen och tittade närmare på uttrycket för variansen, Var[ln(STRjt)], och den del som detta uttryck till stor del består av, Var[Ojt].

Som väntat stämde dessa också väl. För behandlingen ACE-hämmare som

utskrivningsmedicin var bootstrapvariansen av Ojt* för alla sjukhus utom ett större än variansen beräknad med formel (1). För behandlingarna intravenös β-blockerare och

acetylsalicylsyra eller antikoagulantia som utskrivningsmedicin var variationen större mellan sjukhusen avseende skillnaden mellan varianserna för Ojt* och Ojt.

Vi tittade även på de uttryck som antogs vara noll och som vi bortsåg från i formel (4), Var[Ejt] och Cov(Ojt,Ejt).

Resultaten visade på att Var[Ejt] inte är noll, men ändå tillräckligt mycket mindre än Var[Ojt] för att man ska kunna bortse från denna i (4).

Utan ovanstående antaganden ser variansformeln ut som: Var[ln(STRjt)]= Var[Ojt]* 2 1       jt E   +Var[Ejt]* 2 1       jt E   -2*Cov(Ojt, Ejt)* 2 1       jt E  

En jämförelse gjordes mellan det första uttrycket och summan av de andra två genom att för 20 sjukhus stoppa in respektive bootstrapvarianser. Istället för

2 1         jt E tog vi fram 2 1       b jt E   ,

(31)

a) intravenös beta-blockerare -0,01 0 0,01 0,02 0,03 0,04 0,05 0,06 sjukhus

bidrag till Var[ln(STRjt)]

term två plus tre term ett b) ACE-hämmare som utskrivningsmedicin

-0,02 0 0,02 0,04 0,06 sjukhus

bidrag till Var[ln(STRjt)]

term två plus tre term ett c) acetylsalicylsyra eller antikoagulantia som

utskrivningsmedicin -0,0005 0 0,0005 0,001 0,0015 0,002 0,0025 sjukhus

bidrag till Var[ln(STRjt)]

term två plus tre term ett

Figur 13. Term två plus term tre =Var[Ejt]*

2 1         jt E -2*Cov(Ojt, Ejt)* 2 1       jt E

 och term ett=Var[Ojt]*

(32)

6 Referenser

1. Socialstyrelsen, http://www.sos.se/mars/kva026/kva026.htm, 2003-08-27.

2. RIKS-HIA, http://www.riks-hia.se, 2003-08-27.

3. Stenestrand, U., Lindbäck, J. & Wallentin, L. Reasons for variations in treatment of acute myocardial infarction between different hospitals within one country based on observations in a large prospective cohort. Inskickad.

4. Rosenbaum, P.R. & Rubin, D.B.(1983), The central role of the propensity score in observational studies for casual effects, Biometrica, 70, sid 41-55.

5. Blom, G.(1984), Sannolikhetsteori med tillämpningar, Studentlitteratur, Lund, sid. 157-159.

(33)

7 Bilagor

7.1 Bilaga 1. Konfidensintervall

a) intravenös beta-blockerare -2,5 -2 -1,5 -1 -0,5 0 0,5 1 1,5 sjukhus ln(STR)

b) ACE-hämmare som utskrivningsmedicin

-0,8 -0,6 -0,4 -0,2 0 0,2 0,4 0,6 0,8 1 sjukhus ln(STR)

c) acetylsalicylsyra eller antikoagulantia som utskrivningsmedicin

-0,25 -0,2 -0,15 -0,1 -0,05 0 0,05 0,1 0,15 0,2 0,25 0,3 sjukhus ln(STR)

Figur 14.Konfidensintervall över ln(STRjt). Det första i varje par är beräknat enligt formel och det andra är

(34)

a) intravenös beta-blockerare -2 -1,5 -1 -0,5 0 0,5 1 1,5 sjukhus ln(STR)

b) ACE-hämmare som utskrivningsmedicin

-0,8 -0,6 -0,4 -0,2 0 0,2 0,4 0,6 sjukhus ln(STR)

c) acetylsalicylsyra eller antikoagulantia som utskrivningsmedicin

-0,25 -0,2 -0,15 -0,1 -0,05 0 0,05 0,1 0,15 0,2 sjukhus ln(STR)

Figur 15. Konfidensintervall över ln(STRjt). Det första i varje par är beräknat enligt formel och det andra är

(35)

a) intravenös beta-blockerare -2,5 -2 -1,5 -1 -0,5 0 0,5 1 1,5 sjukhus ln(STR)

b) ACE-hämmare som utskrivningsmedicin

-2,5 -2 -1,5 -1 -0,5 0 0,5 1 sjukhus ln(STR)

c) acetylsalicylsyra eller antikoagulantia som utskrivningsmedicin

-0,2 -0,15 -0,1 -0,05 0 0,05 0,1 0,15 0,2 sjukhus ln(STR)

Figur 16. Konfidensintervall över ln(STRjt). Det första i varje par är beräknat enligt formel och det andra är

(36)
(37)

. 0 SJUKHUS=4 FREQUENCY 100 200 300 400 500 600 700 800 900 1000 Z_uac MI DPOI NT -0 . 3 8 5 -0 . 3 7 5 -0 . 3 6 5 -0 . 3 5 5 -0 . 3 4 5 -0 . 3 3 5 -0 . 3 2 5 -0 . 3 1 5 -0 . 3 0 5 -0 . 2 9 5 -0 . 2 8 5 -0 . 2 7 5 -0 . 2 6 5 -0 . 2 5 5 -0 . 2 4 5 -0 . 2 3 5 -0 . 2 2 5 -0 . 2 1 5 -0 . 2 0 5 -0 . 1 9 5 -0 . 1 8 5 -0 . 1 7 5 -0 . 1 6 5 -0 . 1 5 5 -0 . 1 4 5 -0 . 1 3 5 -0 . 1 2 5 -0 . 1 1 5 -0 . 1 0 5 -0 . 0 9 5 -0 . 0 8 5 -0 . 0 7 5 -0 . 0 6 5 0 SJUKHUS=25 100 200 300 400 500 600 700 800 900 1000 Z_uac MI DPOI NT -0 . 1 2 -0 . 1 1 -0 . 1 0 -0 . 0 9 -0 . 0 8 -0 . 0 7 -0 . 0 6 -0 . 0 5 -0 . 0 4 -0 . 0 3 -0 . 0 2 -0 . 0 1 0 . 0 0 0 . 0 1 0 . 0 2 0 . 0 3 0 . 0 4 0 . 0 5 0 . 0 6 0 . 0 7 0 . 0 8 0 . 0 9 0 . 1 0 0 . 1 1 0 . 1 2 0 . 1 3 0 . 1 4 0 . 1 5 0 . 1 6 0 . 1 7 0 . 1 8 0 . 1 9 0 . 2 0 SJUKHUS=88 FREQUENCY 0 100 200 300 400 500 600 700 800 900 1000 1100 1200 Z_uac MI DPOI NT -0 . 4 6 3 -0 . 4 3 8 -0 . 4 1 3 -0 . 3 8 8 -0 . 3 6 2 -0 . 3 3 7 -0 . 3 1 2 -0 . 2 8 7 -0 . 2 6 2 -0 . 2 3 7 -0 . 2 1 2 -0 . 1 8 7 -0 . 1 6 2 -0 . 1 3 7 -0 . 1 1 2 -0 . 0 8 7 -0 . 0 6 2 -0 . 0 3 7 -0 . 0 1 2 0 . 0 1 3 0 . 0 3 8 0 . 0 6 3 0 . 0 8 8 0 . 1 1 3 0 . 1 3 8 0 . 1 6 3 0 . 1 8 8 0 . 2 1 3 0 . 2 3 8 0 . 2 6 3 0 . 2 8 8

(38)
(39)

7.3 Bilaga 3. Programkod i SAS.

Libname Trude 'm:\My SAS Files';

option nonotes;

data str_ett;

set Trude.asakoapro; *Tar ett dataset med propensity scores;

by sjukhus; *för acetylsalicylsyrabara eller;

if first. sjukhus then n=1; *antikoagulantia som utskrivnings-;

else n+1; *medicin och nummrerar observationerna; i=1; *inom sjukhus, i skapas enbart för proc;

run; *proc multtest;

data Trude.STR; *skapar ett tomt dataset som ska fyllas;

*på. Blir här bara en tom rad; /***********************************/

/******* drar stickprov ************/ /***********************************/

%macro str2(repl);

%do i=1 %to &repl; *när macrot anropas anges hur många;

*gånger do-satsen ska köras;

proc multtest data=str_ett noprint nocenter outsamp=str_tva

nsample=1 bootstrap; *med proc multtest och valet bootstrap;

by sjukhus; *dras ett st.pr med återläggning från;

class n; *varje sjukhus,n:en dras;

test mean(i); *proc multtest kräver att ett test;

run; *genomförs;

data str_tva; *n:en som dras får i det nya st.pr.;

set str_tva; *namnet _obs_,här får de namnet n igen;

rename _obs_=n; run;

proc sort data=str_tva; *det dragna st.pr. sorteras efter n inom;

by sjukhus n; *varje sjukhus;

run;

data str_tre; *och slås samman med ett dataset som;

merge str_tva Trude.a; *innehåller alla oberoende variabler;

by sjukhus n; *de matchas efter sjukhus och n; if _sample_=. then delete;

run;

proc sort data=str_tre; *sorterar det sammanslagna datasetet;

by sjukhus n; *efter n inom varje sjukhus;

run;

proc logistic descending data=str_tre noprint;

model asakoany=alder kon a0cirk dm hyperton smoker tinfarkt tptcabg2 aacei aantiary aantiko2 aasa2 abetabl2 acah adigital adiureti alipids anitro sviktar kom_stro kom_njur kom_kol kom_deme kom_canc kom_hsvi;

output out=pred_asa p=phat_asa;*med proc logistic beräknas;

*sannolikheten att få behandling;

run; *beroende av vilket värde de oberoende;

proc means data=pred_asa noprint;*variablerna har;

(40)

var phat_asa asakoany; *sannolikheter & även;

output out=str2_asa sum=sphat_asa sasak n=n;*behandlingsvariabeln;

run; *så att O & E erhållshär får de namnen;

*sphat_asa och sasak;

data str2_asa2;

set str2_asa(keep=sjukhus sasak sphat_asa n);

run; *behåller önskade variabler:sjukhus,O&E;

proc sort data=str2_asa2; *sorterar detta dataset efter sjukhus;

by sjukhus; run;

proc logistic descending data=str_tre noprint;

model uaceiny=alder kon a0cirk dm hyperton smoker tinfarkt tptcabg2 aacei

aantiary aantiko2 aasa2 abetabl2 acah adigital adiureti alipids anitro sviktar kom_stro kom_njur kom_kol kom_deme kom_canc kom_hsvi;

output out=pred_uac p=phat_uac; run;

*gör här samma sak för ACE-hämmare;

proc means data=pred_uac noprint; By sjukhus;

var phat_uac uaceiny;

output out=str2_uac sum=sphat_uac suacei n=n; run;

data str2_uac2;

set str2_uac(keep=sjukhus suacei sphat_uac n); run;

proc sort data=str2_uac2; by sjukhus;

run;

proc logistic descending data=str_tre noprint;

model ibetabl2ny=alder kon a0cirk dm hyperton smoker tinfarkt tptcabg2 aacei aantiary aantiko2 aasa2 abetabl2 acah adigital adiureti alipids anitro sviktar kom_stro kom_njur kom_kol kom_deme kom_canc kom_hsvi;

output out=pred_ibe p=phat_ibe; run;

*och för intravenös beta-blockerare;

proc means data=pred_ibe noprint; By sjukhus;

var phat_ibe ibetabl2ny;

output out=str2_ibe sum=sphat_ibe sibeta n=n; run;

data str2_ibe2;

set str2_ibe(keep=sjukhus sibeta sphat_ibe n); run;

proc sort data=str2_ibe2; by sjukhus;

run;

data str_ihop;

(41)

Z_uac=log(suacei/sphat_uac); *för varje beh.och sjukhus;

Z_ibe=log(sibeta/sphat_ibe); run;

data Trude.STR;

set Trude.STR str_ihop; *allt matas in i Trude.STR;

run;

%end; *slut på do-satsen;

%mend; *slut på macrot;

%str2(10000); *macrot anropas 10000 gånger;

proc sort data=STR(where=(sjukhus ne .));

by sjukhus; *tar bort tomma raden från Trude.STR;

run; *och sorterarefter sjukhus;

data konf_str2_asa; *spar sjukhus och Z för resp. beh.i;

se

run; t Trude.STR(keep= sjukhus Z_asa);*för att ta fram konf.interv.;*varsitt data set;

data konf_str2_uac;

set Trude.STR(keep= sjukhus Z_uac);

run;

data konf_str2_ibe;

set Trude.STR(keep= sjukhus Z_ibe);

run;

/**********************************************/ /********* tar fram std av STR ****************/ /**********************************************/

proc means data=Trude.STR noprint;*beräknar mha proc means std.avvikelsen;

by sjukhus; *för ln(STR)=Z för varje beh. och;

var Z_asa Z_uac Z_ibe; *inom sjukhus;

ou

run; tput out=Trude.std_STR std=std_asa std_uac std_ibe;

*vill nu ta fram den beräknade variansen på originalst.pr.;

data var_asa;

set Trude.asakoapro; *här acetyl.;

va

run; rians=phat*(1-phat);

proc means data=var_asa noprint;

by sjukhus; *summerar ovanstående varians för att få;

var varians phat; *Var[O] & alla prop.scores för att få E;

ou

run; tput out=var_asa2 sum=svar sphat;

data var_asa3;

set var_asa2;

std_asa_org=sqrt((1/(sphat**2))*svar);

run; *detta är formeln för Var[ln(STR)];

data var_ibe;

set Trude.ibetablpro; *gör samma sak för intrav. beta-bl.;

varians=phat*(1-phat);

(42)

proc means data=var_ibe noprint;

by sjukhus;

var varians phat;

output out=var_ibe2 sum=svar sphat;

run;

data var_ibe3;

set var_ibe2; st

run; d_ibe_org=sqrt((1/(sphat**2))*svar);

data var_uac;

set Trude.uaceipro; *och för ACE-hämmare;

varians=phat*(1-phat);

run;

proc means data=var_uac noprint;

by sjukhus;

var varians phat;

output out=var_uac2 sum=svar sphat;

run;

data var_uac3;

set var_uac2;

std_uac_org=sqrt((1/(sphat**2))*svar);

run;

data Trude.tempvarZ;

merge var_asa3(keep=sjukhus std_asa_org) var_ibe3(keep=sjukhus

std_ibe_org)

var_uac3(keep=sjukhus std_uac_org);

by sjukhus; *behåller det intressanta och slår ihop;

run; *alla beräknade std för de olika beh.;

data Trude.str2; *slår ihop datasetet med bootstrapstd;

merge Trude.std_STR(drop= _type_ _freq_) Trude.tempvarz;

by

run; sjukhus; *enligt formel.;*och datasetet med varianserna beräknade; /****************************************/

/***** tar fram bootstrapintervall ******/ /****************************************/

proc sort data=konf_str2_uac; *Tar datasetet med de 10000 Z-värdena;

by sjukhus Z_uac; *och sorterar efter Z inom varje sjukhus;

run; *här beh uacei=ACE-hämmare.;

data konf1;

set konf_str2_uac;

by sjukhus; *numrerar Z inom sjukhus;

if first. sjukhus then n=1;

else n+1; pa

run; ssa=1; *passa används senare;

data konf2;

set konf1 end=final; *Tar här fram en variabel som är;

if n=1 then count+1; *antal sjukhus och en som är;

if

(43)

set konf2(keep=antsj antboot);

passa=1; *får här en rad med antsj antboot och;

if

run; antsj ne . then output; *och passa;

data konf4(drop=passa); *slår ihop de numrerade Z:na med antsj;

merge konf1 konf3; *och antboot;

by passa;

run;

data konf5;

set ko f4n ;

ajust=1-(0.95)**(1/antsj); *det bonferroni korrigerade alfat;

a=0.05;

aaa=antboot*(ajust/2); *tar fram den nedre gränsen i intervallet;

if n=round(aaa,1.0) then output;*rundar av lite;

rename Z_uac=lowerz; *döper om det Z som utgör den nedre gränsen;

run;

data konf6;

set ko f4n ;

ajust=1-(0.95)**(1/antsj); a=0.05;

aa=antboot*(1-(ajust/2)); *Tar här fram den övre gränsen;

if n=round(aa,1.0)+1 then output;

rename Z_uac=upperz;

run;

data konf7; *slår ihop dataseten innehållandes;

merge konf5 konf6; *nedre och övre gräns;

by sjukhus;

run;

data konf8; *behåller det intressanta;

set konf7(keep=sjukhus lowerz upperz);

run;

proc means data=Trude.STR noprint;

by sjukhus; *tar fram medelvärdet av Z=ln(STR) från;

var Z_asa Z_uac Z_ibe; *bootstrap-stickproven inom varje sjukhus;

output out=y mean= mean_asa mean_uac mean_ibe;

run;

data konf9;

merge konf8 y(keep=sjukhus mean_uac);

by sjukhus; *slår ihop datasetet med övre & nedre gräns;

run; *med datasetet innehållandes medelvärdet;

data trude.konf_str2_uac;

set konf9;

rename lowerz=b_lowerz; *döper om så jag ska veta att det är boot

gränser;

rename mean_uac=b_mean;

re

run; name upperz=b_upperz;

/********************************************/ /** tar fram konf.intervall på org.st.pr. ***/ /********************************************/

(44)

set Trude.uacei(drop=_type_ _freq_); *För beh uacei=ACE-hämmare;

Z=

run; log(suacei/e_uacei); *Tar fram Z=STR;

data konfstr;

merge Trude.tempvarz(keep=sjukhus std_uac_org) plotz2;

by sjukhus;

var_uac=std_uac_org**2; *Lägger till variansen;

run;

data konfstr2;

set konfstr;

lowerz=z-(3.169*sqrt(var_uac)); *Tar fram nedre och;

upperz=z+(3.169*sqrt(var_uac)); *övre gräns;

run;

data Trude.konfstr; *har nu ett dataset med Z,nedre,;

se

run; *&övre gräns för Z från originalst.pr.;

t konfstr2(drop=var_uac e_uacei suacei std_uac_org);

/****************************************/ /********* tar fram std för Ojt *********/ /****************************************/

proc means data=Trude.STR noprint;

by sjukhus;

var sasak suacei sibeta; *tar fram std för Ojt* för varje;

output out=std_O std=std_O_asa std_O_uac std_O_ibe;

run; *beh. inom sjukhus;

data varo_uacei1; *i Trude.uaceipro finns prop score;

set Trude.uaceipro; *för alla obs. för ACE-hämmare;

var_uac=phat*(1-phat); *tar här fram variansen för varje obs.;

run;

proc means data=varo_uacei1 noprint;

by sjukhus;

var var_uac; *summerar varianserna för att få Var[Ojt];

ou

run; tput out=varo_uacei2 sum=varo_uac;

data varo_uacei3;

set varo_uacei2;

std_O_uac_org=sqrt(varo_uac); *tar fram std;

run;

data Trude.jmfvouac;

merge varo_uacei3(keep=sjukhus varo_uac) std_O(keep=sjukhus std_O_uac);

by

run; sjukhus; *slår ihop bootstd med beräknad;

/******************************************/ /******** tar fram std för Ejt ************/ /******************************************/

(45)

output out=std_E std=std_asa std_ibe std_uac;

run; *tar fram std för E=sphat inom varje sjukhus;

/******************************************/ /********* tar fram kovariansen ***********/ /******************************************/

data p;

set Trude.STR; *plockar ut 20 sjukhus;

if sjukhus=1 or sjukhus=3 or sjukhus=10 or sjukhus=14 or sjukhus=20 or sjukhus=25 or sjukhus=31 or sjukhus=35 or sjukhus=39 or sjukhus=40 or sjukhus=41 or sjukhus=46 or sjukhus=51 or sjukhus=53 or sjukhus=54 or sjukhus=59 or sjukhus=64 or sjukhus=70 or sjukhus=74 or sjukhus=77;

run;

proc corr cov data=p outp=E;

by sjukhus; *tar fram kovariansen mellan;

var suacei sphat_uac; *O & E inom sjukhus.Här för;

run; *beh. uacei=ACE-hämmare;

data W;

set E(drop=e); *fix och trix för att enbart;

if _type_='COV' and _name_='e'; *behålla kovariansen;

rename o=cov;

run;

data Trude.cov_uac;

set W(keep=sjukhus cov);

References

Related documents

Konsortiet hade inget att invända mot priset, men i ett brev från Ivar Olsson till FSV:s huvudkontor angående betalningsvillkoret skrev han att ”styrelsen för Ungers bolag ansåg

Från att förskolläraren hade ett styrdokument som beskrev att demokratin ska komma till uttryck genom vardaglig handling från förskolläraren (Socialstyrelsen, 1993) så har detta

[r]

Likt Abeysekera och Guthries (2003, p. 161) studie som inte fann begreppet intellektuellt ka- pital i företags årsredovisningar på Sri Lanka, fann inte heller denna uppsats

Det finns även alléer i området och totalt beskrivs 30 objekt utöver dessa som tillsammans bildar en naturmiljö som är förutsättningen för rik biologisk mångfald och för

Fokusgruppsintervjun är aktion 1, audioinspelningar, papper och färgpennor till lärarna delas ut för att de under de inledande minuterna innan fokusgruppsintervjun startar får

i form av taylorism med människan som pusselbit i ett system eller en process (Fredrick Winslow Taylor). Weber som upplevt Bismarcks Preussen / Tyskland underkänner både den

Skapandet av det gemensamma förhållningssättet gentemot förintelsen finns tydligt i två av böckerna, alla tre böckerna visar exempel på demokrati från tidigare samhällen