a)
df = data.frame(gender = sort(rep(c('f', 'm'), 10)), female = c(2474, 2547, 2830 ,3219 ,3429 ,3448 , 3677, 3872,4001 ,4116),
male = c(2844, 2863 ,2963 , 3239 ,3379 , 3449 ,3582 ,3926, 4151 , 4356))
df
## gender female male
## 1 f 2474 2844
## 2 f 2547 2863
## 3 f 2830 2963
## 4 f 3219 3239
## 5 f 3429 3379
## 6 f 3448 3449
## 7 f 3677 3582
## 8 f 3872 3926
## 9 f 4001 4151
## 10 f 4116 4356
## 11 m 2474 2844
## 12 m 2547 2863
## 13 m 2830 2963
## 14 m 3219 3239
## 15 m 3429 3379
## 16 m 3448 3449
## 17 m 3677 3582
## 18 m 3872 3926
## 19 m 4001 4151
## 20 m 4116 4356
Vi benytter mean var og sd funktionerne i R til og regne de forskellige summariske størrelser.
matrix( c(mean(df$female), var(df$female), sd(df$female) ), nrow = 1,
dimnames = list(c(''), c('mean_female', 'var_female', 'sd_female')))
## mean_female var_female sd_female
## 3361.3 326766.7 571.6352
Stikprøvegennemsnittet af en række observationer er et tal som beskriver den centrale tendens af observationerne. Inden for sandsynlighedsteori vides det at hvis observationerne antages uafhængige og identiske fordelte, så kan vi med nok observationer approksimerer stikprøvegennemsnittet med middelværdien også kendt som den forventede værdi. Stikprøvevariansen siger noget om hvor stor den gennemsnitlige kvardrerede afstand er til stikprøvegennemsnittet. stikprøvespredningen er kvardratroden af stikprøvevariansen (og pr def er spredningen blot kvardratroden af variansen), og vi fortolker den som hvor meget observationerne speder sig fra stikprøvegennesnittet i gennemsnit.
b)
matrix( c(mean(df$male), var(df$male), sd(df$male) ), nrow = 1,
dimnames = list(c(''), c('mean_male', 'var_male', 'sd_male')))
## mean_male var_male sd_male
## 3475.2 268255.1 517.9335
Vi bemærker at drenge børnene i gennemsnit vejer mere end pige børnene, samt at stikprøvespredningen er en smugle lavere ifht til pige børnenes (Det er ikke sikkert at den er signifikant mindre en pige børnenes - kan blot skyldes tilfældig variation).
c)
Vi bruger quantile funktionen til og finde de 5 fraktiler.
quantile(df$female)
## 0% 25% 50% 75% 100%
## 2474.0 2830.0 3438.5 3872.0 4116.0
library(ggplot2)
ggplot(df, aes(x = gender, y = female, colour = gender)) + geom_boxplot(alpha = 0.8)
Ovenstående figut viser 2 boksplots af hhv drenge og pige vægtene i gram. De summariske størrelser vi regnede i opgave a), og b) (mest gennemsnitne) kan visualiseres gennem dette plot. Hvis vi kigger godt efter, kan vi godt tyde at drengene vejer en smugle mere end pigerne (den grønne boks ligger en smugle højere oppe end den røde). Dog er det fra denne figur ikke tydligt og se at spredninger er forskellige (begge bokse er omtrent samme størrelse) d)
varians coefficienterne er givet ved :
\[\beta_{var} = \frac{\mu}{\sigma} \cdot 100\]
hvor \(\mu\) er stikprøvegennemnittet, og \(\sigma\) er stikprøvespredningen.
cat("var coeff female :", (sd(df$female)/mean(df$female))*100, '\n',
"var coeff male" , (sd(df$male)/mean(df$male)*100))
## var coeff female : 17.00637
## var coeff male 14.9037
a)
For at finde mednianen, sorterer vi vores observationer i størrelsesorden, og finder den midterste observation, svarende til medianen.
Den midterste observation i et ordnet datasæt på \(n\) observationer, kan findes ud fra formlen
\[\frac{n + 1}{2}\]
Vi finder det observationsnummer som svare til medinane:
(251 + 1)/2 # observations nummer
## [1] 126
altså er observations nr 126 vores median, svarende til en karakter på 4.
b)
Vi kan på samme måde finde 25 % og 75 % fraktilerne og finde the inner quantile range som pr def er givet ved \[IQR = Q_3 - Q_1\]
hvor \(Q_3\) & \(Q_1\) er hhv 75 og 25 % fraktilerne.
TO DO:
Find dem selv og regn \(IQR\).
a)
df = data.frame(patient = seq(1, 15 , length.out = 15),
before = c(9.1, 8.0, 7.7, 10.0, 9.6, 7.9, 9.0, 7.1, 8.3, 9.6, 8.2, 9.2, 7.3, 8.5, 9.5),
after = c(8.2, 6.4, 6.6, 8.5, 8.0, 5.8, 7.8, 7.2, 6.7, 9.8, 7.1, 7.7, 6.0, 6.6, 8.4)
)
df
## patient before after
## 1 1 9.1 8.2
## 2 2 8.0 6.4
## 3 3 7.7 6.6
## 4 4 10.0 8.5
## 5 5 9.6 8.0
## 6 6 7.9 5.8
## 7 7 9.0 7.8
## 8 8 7.1 7.2
## 9 9 8.3 6.7
## 10 10 9.6 9.8
## 11 11 8.2 7.1
## 12 12 9.2 7.7
## 13 13 7.3 6.0
## 14 14 8.5 6.6
## 15 15 9.5 8.4
Brug median funktionen i R til og finde medianerne.
cat("median_before :", median(df$before), "\n",
"median_after :", median(df$after))
## median_before : 8.5
## median_after : 7.2
b)
cat("std_before", sd(df$before),
"\n",
"std_after", sd(df$after))
## std_before 0.9023778
## std_after 1.090129
c)
Her er en god fortolkning af kovarians og korrelation:
If the greater values of one variable mainly correspond with the greater values of the other variable (de er positivt korrelerede), and the same holds for the lesser values, (i.e., the variables tend to show similar behavior), the covariance is positive.[2] In the opposite case, when the greater values of one variable mainly correspond to the lesser values of the other (de er negativt korrelerede), (i.e., the variables tend to show opposite behavior), the covariance is negative. The sign of the covariance therefore shows the tendency in the linear relationship between the variables (i.e. positiv kovarians indikerer at de er positivt korrelerede, omvendt negativ covarians siger noget om at de er negativt korrelerede). The magnitude of the covariance is not easy to interpret because it is not normalized and hence depends on the magnitudes of the variables. The normalized version of the covariance, the correlation coefficient, however, shows by its magnitude the strength of the linear relation (korrelationen deriomd siger noget om hvor meget at de er lineært korrelerede (positivt eller negativt) med hinanden).
cov(df$before, df$after)
## [1] 0.7964286
Vi ser at kovariansen er positiv, altså skulle vi gerne se at større værdier af \(before\) leder til større værdier af \(after\).
d)
Vi kan vise forholdet mellem \(before\) og \(after\) i et punktplot.
ggplot(df, aes(x = before, y = after)) + geom_point() +geom_smooth(method = 'lm', se=FALSE)
## `geom_smooth()` using formula 'y ~ x'
De ser bestemt ud som om at der er en positiv lineær sammenhæng imellem de to også afspejlet i korrelationen i mellem dem beregnet med cor funktionen.
Find selv formlerne for korrelation og kovarians og regn efter.
cor(df$after, df$before)
## [1] 0.8096188
e)
Lav en ny variabel som beregner forskellen.
df$diff = df$before - df$after
df
## patient before after diff
## 1 1 9.1 8.2 0.9
## 2 2 8.0 6.4 1.6
## 3 3 7.7 6.6 1.1
## 4 4 10.0 8.5 1.5
## 5 5 9.6 8.0 1.6
## 6 6 7.9 5.8 2.1
## 7 7 9.0 7.8 1.2
## 8 8 7.1 7.2 -0.1
## 9 9 8.3 6.7 1.6
## 10 10 9.6 9.8 -0.2
## 11 11 8.2 7.1 1.1
## 12 12 9.2 7.7 1.5
## 13 13 7.3 6.0 1.3
## 14 14 8.5 6.6 1.9
## 15 15 9.5 8.4 1.1
regn selv de resterende summariske størrelser og forsøg og fortolk på dem (prøv og drag inferens baseret på disse størrelser - Tror i behandlingen virker ud fra hvad disse tal siger, altså tror vi den har en effekt på cholsterol??)
f)
Et godt plot til og prøve og illustrer om der er forskel på to variable er ved boksplots, ikke Camilla og sabrina? Hvorfor? Lav resten selv i kan godt <3, ses næste uge!
df2 = data.frame(treatment = sort(rep(c('before', 'after'), 30)),
chol_level = c(df$after, df$before))
ggplot(df2, aes(x = treatment, y = chol_level,
colour = treatment)) + geom_boxplot()
Regn selv gennemsnit of sd og varians of fortolk.