Følgende punkter er basert på leverte arbeidskrav i emnet. Disse kan brukes for å forbedre dine arbeidskrav.
Å skrive rapporter
Unngå å forfatte rapporter i punkter/lister. Denne formen av tekst kan hjelpe leseren men kan også bryte opp og skape unødvendig forvirring. En punktliste kan også få spørsmålet «hvorfor» å forsvinne. Leseren kan være interessert i å vite hvorfor man velger en tilnærming eller metode.
Skriv for en lesere som er kjent med området men savner informasjon om hvorfor man skal lese rapporten. Du må fylle i «blanks» hos leseren!
Rapporter kan med fordel struktureres som introduksjon, metode, resultat og diskusjon. Man kan velge å ikke ha med disse overskriftene men til tross organisere paragrafene på denne måten. Introduksjonen forteller leseren hva teksten skal belyse, metoden gir et innblikk i hva og hvordan du gjennomført arbeidet, resultatene beskriver og diskusjon tolker.
Vær sikker på at begreper og metoder er definerte! «Typical error», «Coefficient of variation», «laktatterskel» osv. kan være mange ulike ting. Man kan bruke en referanse eller en formel for å definere beregninger og konsepter osv.
Husk å definer feilstapler (error bars), farger, punkter enheter osv. I tabeller, figurer og tekst.
Enheter som V̇O2max kan defineres mer eller mindre presist, her står V for volum og punktet over V indikerer et volum per tidsenhet. Denne skreves som V̇O<sub>2max</sub> hvor ̇ er HTML-kode for å gi en punkt over bokstaven som skreves før tegnet. Når vi angir enheten kan vi bruke ml×kg-1×min-1 eller ml kg-1 min-1, denne notasjonen er mer vanlig i vitenskapelig kommunikasjon.
Å bruke R
R bruker punktum som kommaseparerare. For en helhetlig rapport kan det være lurt å velge en måte å rapportere resultater på.
Hensikten/styrken med reproduserbar rapportering er at tall, tabeller, figurer osv. er direkte koblet til dataene. Prøv å unngå å skrive inn tall direkte. Bruk isteden variabler (eks. var1) som du skaper i code chunks och settes inn i teksten. R vill i dette fallet lete etter en variable i environment som heter var1. Se her https://rmarkdown.rstudio.com/lesson-4.html for mer info.
Å definere innstillinger for code chunks vil gjøre rapportene lettere å lese. F.eks. ved å inkludere koden som beskrives under vil ta vekk meddelende, «warnings» og koden fra din rapport. Hus at innstillinger må settes først i code chunken.
Unngå å bruke print() i en rapport da dette vil resultere i uformatert tekst. Bruk istedenfor tabellverktøy (som gt eller knitr::kable()) for tabeller.
Se her Quarto - Citations & Footnotes for hvordan du kan sette en egen overskrift for referanser og inkludere referanser hvor du ønsker.
For å bytte ut engelsk Table/Figure mot norsk Tabell/Figur, sett inn
crossref:
fig-title: "Figur"
tbl-title: "Tabell"
i YAML feltet.
Spesifikt innhold
Arbeidskrav 1
Se til å organiser github-mapper på en overskuelig måte. En metode for å underlette for leseren er å bruke en README.md. Denne vil bli konvertert til HTML på github og kan dermed gi et overblikk over mappen (repository). Hvis du trenger å spare gamle filer så kan disse flyttes til en mappe («archive» eller lignende).
Det er viktig å vise at du bruker kilder som er angitt i oppgaven. Bruk disse for å vise til definisjoner og gi bakgrunn til hvorfor du ønsker å vise dine resultater til leseren. Bruk funksjonen for bibliography i quarto.
Hva betyr CV, typical error osv. som du beregnet? Her holder det ikke bare med definisjoner, prøv deg også på en tolkning. En måte kan være å bruke annen litteratur som beregnet CV, eller sammenligne med et annet test som du gjort.
Noen detaljer i en metode kan med fordel holdes kort og kanskje til og med utelates da det tilhører eks. «good laboratory practice». Her kan man spørre seg hvilken informasjon som kreves for å repetere forsøkene gitt at man praktiserer gode rutiner i laboratoriet?
Arbeidskrav 2
Rapportene savner noen steder en introduksjon, hva er det rapporten skal beskrive? Bruk rapportens deler til å skrive noe om de grafer og analysene som dere presenter. Hvordan kan man tolke laktatterskel? hvorfor predikerer man størrelse på DNA fragmenter? Hva betyr t-verdien, p-verdien?
Standard error er spredning i en estimert fordeling av «teoretiske» utvalg. Den forteller ikke hvor bra modellen er, men snarere med hvilken usikkerhet vi bør tolke estimatet. Hvordan skiller denne tolkningen fra deres tolkning?
T-verdien i en regresjonstabell er en ratio mellom estimat og SE, denne brukes for å beregne p-verdien. P-verdien i sin tur forteller oss om hvor usannsynlig vår data, eller enda mer ekstrem data er hvis nullhypotesen er sann. Hvordan kan dere justere beskrivelsen av regresjonsoutput basert på denne beskrivelsen?
Rapportene er generellt komplekse med tabller, figurer og tall i tekst. Bruk fig-cap, tbl-cap osv for å numrere figurer og tabeller.
Arbeidskrav 3
Spørsmål 1-3:
Definisjon av standardfeilen er ikke at vi kan forvente en endring fra gjennomsnittet i en størrelse som tilsvarer SE, isteden beskriver SE variasjon i repeterte gjennomsnitt konstruerte fra utvalg fra populasjonen.
Forskjell i SE mellom modellene henger sammen med utvalgsstørrelsen. P-verdien forteller ikke sannsynligheten for at null-hypotesen er sann. Hvordan henger utvalgsstørrelse sammen p-verdien?
Den skyggete delen av t-fordeling er resultater like eller mer ekstreme enn et observert resultat. T-fordelingen representerer vårt beste estimat av mulige resultater under null-hypotesen.
I modellene får vi en t-verdi, dette er avstanden fra nullhypotesen målt i antall standardfeil.
Spørsmål 4:
Her er del lurt å igjen definere SE! Den gjennomsnittlige standardfeilen er et estimat på spredningen i utvalgsfordelingen! Utvalgsfordelingen er alle beregnede gjennomsnittene!
Spørsmål 5-7:
Hvordan kan vi bruke dette for å definere statistisk styrke? Statistisk styrke kan defineres ved hjelp av tankeeksperimentet at man gjennomfører 1000 studier på samme populasjon. Hvor mange vill finne en definert effekt når man setter grensen for p-verdien og utvalgsstørrelsen til et spesifikt nivå?
Spørsmål 8:
Når vi ikke har noen effekt så vil vi finne en effekt i et antall studier basert på den grense vi setter på \(\alpha\). Dette betyr at \(\alpha\) definerer våre antall falske positive fynd og at fordeling av p-verdier ved ingen effekt er uniform, hva betyr dette?
Arbeidskrav 4:
Husk primær målsetting med denne oppgaven: «fokus på design av studiene og valg av statistiske metoder/test for å besvare studienes problemstilling». For å løfte flere av deres tekster kan man tenke at man fokuserer på å sammenligne studiene på disse punktene.
Jeg savner noe informasjon i mange arbeidskrav om studiedesigner i stort, hvordan forholder seg de studier dere har analysert til andre studiedesigner. Her kan tenkes at man gir en generell innføring i studiedesigner i en paragraf for å vise for leseren hvordan man kan forstå de studiene som du har analysert. Det er da også mulig å bruke forslag på pensum!:)
Bruk gjerne også noe plass på å beskrive de statistiske metodene som blir brukt, dette kan med fordel gjøres med henvisning til pensum (eller annen passende litteratur). Har du kjennskap til testene som blir brukt på den nivå at du vet hvilke kommandoen som skal brukes i R for å gjenskape analysene?
Til tross for at jeg foreslå at man kan bruke QALMRI så sa jeg også at rapporten ikke skulle inneholde QALMRI-tabellen. (Jeg vil ikke underkjenne oppgaver som har QALMRI som bærende struktur).
Tenk på om din tekst kan bli mer strukturert ved å bruke tydeligere temaer per paragraf. Når en paragraf er veldig lang, og inneholder flere ulike temaer blir det vanskelig for leseren å følge. En lettlest paragraf har kanskje 100-200 ord!
I oppgaven er det lov på kommer med noen meninger om studiedesignene, eller analysene er «gode», hva bør gjøres annerledes for å lage bedre vitenskap. Et eksempel som flere er inne på er statistiske tester innad eksperimentelle grupper, hva sier disse oss?
En tabell eller figur er et veldig godt innslag i en rapport. Men den må følges opp i løpende tekst.
Arbeidskrav 5
Bruk tabeller for det mest sentrale. En kortere liste på eksempelvis øvelser, eksklusjonskriterier osv. kan skrives i løpende tekst. Når man har en mer kompleks fremstilling kan tabellen hjelpe.
Husk at %-vis endring passer mindre bra for statistiske analyser. Det finnes noen unnatak, når vi log-transformerer så blir tilbake-transformerte data % endring (pga loven om logaritmer, log(a) – log(b) = log(a/b)). Istedenfor % endring i statistiske analyser kan man bruke absolutte tall og eventuelt konvertere til % endring for fremvisning av resultater.
Ved å bruke ordet signifikant så gjør man av tradisjon et utsagn om et statistikk test, vær nøyaktig med hvilken sammenligning som er «signifikant».
I metodeavsnitt så bør rapporten bare beskrive de deler som rapporten omhandler. Dersom man f.eks. ikke presenterer muskelbiopsidata bør disse ikke presenteres. Tanken her er å lage en rapport som etterligner men ikke er en kopi av originalrapporten!
Studiedesignen kan stille till problemer da vi måler styrke og muskelvekst innad deltakere. Vi kan bruke mixed-effects models, men også forenkle. Under følger eksempler på modeller for muskelmassedataene (den samme tilnærmingen kan brukes for styrke).
library(tidyverse); library(exscidata); library(lme4)# Load datadat <- dxadata %>%select(participant:include, lean.left_leg, lean.right_leg) %>%# Extract leg specific datapivot_longer(names_to ="leg", values_to ="lean.mass", cols = lean.left_leg:lean.right_leg) %>%mutate(leg =if_else(leg =="lean.left_leg", "L", "R"), sets =if_else(multiple == leg, "multiple", "single")) %>%select(participant, time, sex, include, sets, leg, lean.mass) %>%# Filter only included participantsfilter(include =="incl") %>%# Make data set wider by time pivot_wider(names_from ="time", values_from ="lean.mass") %>%# Calculate change scoremutate(change = post - pre) %>%# Keep change score and make it wider by setsselect(participant:sets, change) %>%pivot_wider(names_from = sets, values_from = change) %>%print()
# A tibble: 34 × 5
participant sex include multiple single
<chr> <chr> <chr> <dbl> <dbl>
1 FP28 female incl 214 123
2 FP40 female incl -69 2
3 FP21 male incl 619 189
4 FP34 female incl 396 312
5 FP23 male incl -205 445
6 FP36 female incl 587 386
7 FP38 female incl -85 225
8 FP25 male incl 373 -47
9 FP19 male incl 302 127
10 FP13 male incl 734 915
# ℹ 24 more rows
### Use simple t-test on change scoret.test(dat$multiple, dat$single, paired =TRUE)
Paired t-test
data: dat$multiple and dat$single
t = 2.1875, df = 33, p-value = 0.0359
alternative hypothesis: true mean difference is not equal to 0
95 percent confidence interval:
8.586109 237.002126
sample estimates:
mean difference
122.7941
Denne enkle måten å analysere dataene på er helt OK. Et annet alternativ er en “mixed-effects” modell.
# Load datadat <- dxadata %>%select(participant:include, lean.left_leg, lean.right_leg) %>%# Extract leg specific datapivot_longer(names_to ="leg", values_to ="lean.mass", cols = lean.left_leg:lean.right_leg) %>%mutate(leg =if_else(leg =="lean.left_leg", "L", "R"), sets =if_else(multiple == leg, "multiple", "single")) %>%select(participant, time, sex, include, sets, leg, lean.mass) %>%# Filter only included participantsfilter(include =="incl") %>%# Fix time factor mutate(time =factor(time, levels =c("pre", "post"))) %>%print()
# A tibble: 136 × 7
participant time sex include sets leg lean.mass
<chr> <fct> <chr> <chr> <chr> <chr> <dbl>
1 FP28 pre female incl multiple L 7059
2 FP28 pre female incl single R 7104
3 FP40 pre female incl single L 7190
4 FP40 pre female incl multiple R 7506
5 FP21 pre male incl single L 10281
6 FP21 pre male incl multiple R 10200
7 FP34 pre female incl single L 6014
8 FP34 pre female incl multiple R 6009
9 FP23 pre male incl single L 8242
10 FP23 pre male incl multiple R 8685
# ℹ 126 more rows
### Use a mixed model to determine effects of time and conditionm <-lmer(lean.mass ~ time + time:sets + (1|participant), data = dat)summary(m)
Linear mixed model fit by REML ['lmerMod']
Formula: lean.mass ~ time + time:sets + (1 | participant)
Data: dat
REML criterion at convergence: 2022.2
Scaled residuals:
Min 1Q Median 3Q Max
-2.72697 -0.60997 -0.03598 0.46355 2.78820
Random effects:
Groups Name Variance Std.Dev.
participant (Intercept) 4181094 2044.8
Residual 57202 239.2
Number of obs: 136, groups: participant, 34
Fixed effects:
Estimate Std. Error t value
(Intercept) 8603.53 353.07 24.368
timepost 289.06 58.01 4.983
timepre:setssingle -14.53 58.01 -0.250
timepost:setssingle -137.32 58.01 -2.367
Correlation of Fixed Effects:
(Intr) timpst tmpr:s
timepost -0.082
tmpr:stssng -0.082 0.500
tmpst:stssn 0.000 -0.500 0.000
I modellen over gis ingen korreksjon for “baseline” i sammenligningen post. Dette er en legitim måte å analysere dataene på når vi kan anta at forskjeller ved baseline bare er målefeil.
Til sist kan vi prøve en ANCOVA, denne må og ta hensyn til at dataene kommer fra samme individ to ganger
# Load datadat <- dxadata %>%select(participant:include, lean.left_leg, lean.right_leg) %>%# Extract leg specific datapivot_longer(names_to ="leg", values_to ="lean.mass", cols = lean.left_leg:lean.right_leg) %>%mutate(leg =if_else(leg =="lean.left_leg", "L", "R"), sets =if_else(multiple == leg, "multiple", "single")) %>%select(participant, time, sex, include, sets, leg, lean.mass) %>%# Filter only included participantsfilter(include =="incl") %>%# Fix time factor mutate(time =factor(time, levels =c("pre", "post"))) %>%# Pivot wider by timepivot_wider(names_from = time, values_from = lean.mass) %>%print()
# A tibble: 68 × 7
participant sex include sets leg pre post
<chr> <chr> <chr> <chr> <chr> <dbl> <dbl>
1 FP28 female incl multiple L 7059 7273
2 FP28 female incl single R 7104 7227
3 FP40 female incl single L 7190 7192
4 FP40 female incl multiple R 7506 7437
5 FP21 male incl single L 10281 10470
6 FP21 male incl multiple R 10200 10819
7 FP34 female incl single L 6014 6326
8 FP34 female incl multiple R 6009 6405
9 FP23 male incl single L 8242 8687
10 FP23 male incl multiple R 8685 8480
# ℹ 58 more rows
### Use a mixed model to determine effects of time and conditionm <-lmer(post ~ pre + sets + (1|participant), data = dat)summary(m)
Linear mixed model fit by REML ['lmerMod']
Formula: post ~ pre + sets + (1 | participant)
Data: dat
REML criterion at convergence: 966.1
Scaled residuals:
Min 1Q Median 3Q Max
-2.2720 -0.5705 0.0531 0.4515 1.5658
Random effects:
Groups Name Variance Std.Dev.
participant (Intercept) 90183 300.3
Residual 53840 232.0
Number of obs: 68, groups: participant, 34
Fixed effects:
Estimate Std. Error t value
(Intercept) 230.12571 260.08567 0.885
pre 1.00685 0.02927 34.401
setssingle -122.69459 56.27822 -2.180
Correlation of Fixed Effects:
(Intr) pre
pre -0.968
setssingle -0.116 0.008
fit warnings:
Some predictor variables are on very different scales: consider rescaling
lme4 gir oss ikke p-verdier. Men vi kan bruke confint() for å beregne konfidensintervaller. Disse kan brukes får inferens.
Man kan være intressert i å få ut estimate fra modellene, her kan pakken emmeans hjelpe. La si at du ønsker å estimere post-skår fra modellen m.
library(emmeans)# store estimated marginal means in new objectem <-emmeans(m, specs =~ sets)# For plotting you can make the estimates to a data framedata.frame(em)
sets emmean SE df lower.CL upper.CL
1 multiple 8885.274 65.08461 46.04908 8754.269 9016.279
2 single 8762.579 65.08461 46.04908 8631.574 8893.584
Reproduserbare rapporter på Github
Med en reproduserbar rapport mener jeg at tekst, kode og data blir brukt til å skape et «output» som en pdf-, html- eller word-fil. Fordelen med github (og lignende løsninger) er at man har mulighet å samle alle delene i et versjonskontrollsystem. Dette har fordeler for deg som forfatter og for vitenskapelig arbeid i stort (transparens, muligheter å reprodusere osv.). Hensikten med å bruke Github i emnet er å øve på denne måten å lage rapporter.
Med det sagt vil jeg ikke underkjenne rapporter som ikke er reproduserbar i denne betydningen. - Vær konsekvent med filstruktur, filnavn osv på github. Filer som ikke blir brukt bør f.eks. flyttes til en annen mappe.
Kontroller at din mappe går å laste ned fra github, at den seneste versjonen av prosjektet ligger oppe osv!
Innlevering av eksamen
Eksamen skal leveres som en pdf på inspera.
I pdf:en skal det stå beskrevet hvor man kan finne data og kod (beskriv dette under preface i mallen).
Jeg har skapt en mal for innlevering av eksamen, for å bruke denne:
- Lag en `fork` av `https://github.com/dhammarstrom/innlevering-idr4000-qmd` til din egen github bruker.
- Last ned din `fork` til R Studio og oppdatere qmd-filene med dine tekster og repository med dine data.
- For å lage pdf:en, tryck på render. Det kan kreves flere render for å løse problemer som oppstår. Se til å levere den endlige versjonen!
- Den pdf som skapes finner du i mappen `_book`
- Legg til endringer (gi add -A) og commit (git commit -m ‘a message’) og push (git push). Din versjon av innleveringsmappen er nå oppdatert på din github profil
For å bruke denne løsningen kreves at du har quarto installert (https://quarto.org/docs/get-started/).
Det kreves også en installasjon av TeX, quarto sier at TinyTeX er et godt alternativ (se https://quarto.org/docs/output-formats/pdf-engine.html)
Du kan være interessert av å forandre automatisk generert tekst i rapporten, eks. figurtekster, overskrifter. Se i .yml-filen for å endre disse innstillingene.