library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)
Question 1 I will be simulating a lab experiment where eastern newts are held at different temperatures (Hot - 22C, Moderate - 18C, & Cool - 10C) to measure Bd load over time. I expect newts at higher temperatures will have lower Bd amounts at the end of the study.
Question 2
Hot(22C): sample size = 100, mean = 250, sd = 10
Moderate(18C): sample size = 100, mean = 300, sd = 10
Cool(10C): sample size = 100, mean = 100, sd = 12
Question 3
nGroup <- 3 # number of groups
nName <- c("Hot","Moderate","Cool") # names of groups
nSize <- c(100,100,100) # number of observations in each group
nMean <- c(250,300,100) # mean of each group
nSD <- c(10,10,12) # standard deviation of each group
ID <- 1:(sum(nSize)) # create id vector for each row
Bd_load <- c(rnorm(n=nSize[1],mean=nMean[1],sd=nSD[1]),
rnorm(n=nSize[2],mean=nMean[2],sd=nSD[2]),
rnorm(n=nSize[3],mean=nMean[3],sd=nSD[3]))
Temperature <- rep(nName,nSize)
newtdata <- data.frame(ID,Temperature,Bd_load)
newtdata
## ID Temperature Bd_load
## 1 1 Hot 242.58739
## 2 2 Hot 240.66887
## 3 3 Hot 268.17618
## 4 4 Hot 261.34112
## 5 5 Hot 252.88497
## 6 6 Hot 240.65523
## 7 7 Hot 254.83238
## 8 8 Hot 250.38474
## 9 9 Hot 249.00754
## 10 10 Hot 248.82493
## 11 11 Hot 260.49755
## 12 12 Hot 253.90582
## 13 13 Hot 233.61782
## 14 14 Hot 237.76052
## 15 15 Hot 243.34021
## 16 16 Hot 260.67087
## 17 17 Hot 261.89251
## 18 18 Hot 261.99967
## 19 19 Hot 243.83823
## 20 20 Hot 245.84451
## 21 21 Hot 250.14348
## 22 22 Hot 242.25228
## 23 23 Hot 269.03012
## 24 24 Hot 251.03336
## 25 25 Hot 236.07061
## 26 26 Hot 251.48845
## 27 27 Hot 253.41984
## 28 28 Hot 266.55362
## 29 29 Hot 245.78616
## 30 30 Hot 265.76294
## 31 31 Hot 247.31829
## 32 32 Hot 255.36224
## 33 33 Hot 236.63228
## 34 34 Hot 254.51130
## 35 35 Hot 269.03845
## 36 36 Hot 249.41809
## 37 37 Hot 241.13620
## 38 38 Hot 245.11857
## 39 39 Hot 242.68409
## 40 40 Hot 274.75172
## 41 41 Hot 255.30971
## 42 42 Hot 270.32081
## 43 43 Hot 251.78016
## 44 44 Hot 244.86095
## 45 45 Hot 254.28503
## 46 46 Hot 261.42395
## 47 47 Hot 250.91201
## 48 48 Hot 252.30912
## 49 49 Hot 248.05477
## 50 50 Hot 256.90945
## 51 51 Hot 254.53452
## 52 52 Hot 249.36484
## 53 53 Hot 242.73295
## 54 54 Hot 264.57631
## 55 55 Hot 235.74992
## 56 56 Hot 265.32040
## 57 57 Hot 267.14537
## 58 58 Hot 233.45645
## 59 59 Hot 248.84180
## 60 60 Hot 243.89788
## 61 61 Hot 255.79397
## 62 62 Hot 267.39177
## 63 63 Hot 264.15964
## 64 64 Hot 259.22514
## 65 65 Hot 242.43430
## 66 66 Hot 240.43621
## 67 67 Hot 247.73132
## 68 68 Hot 243.26503
## 69 69 Hot 252.16397
## 70 70 Hot 249.07557
## 71 71 Hot 242.73015
## 72 72 Hot 242.63444
## 73 73 Hot 245.54479
## 74 74 Hot 247.07192
## 75 75 Hot 255.33717
## 76 76 Hot 231.90352
## 77 77 Hot 257.18615
## 78 78 Hot 260.77873
## 79 79 Hot 258.30886
## 80 80 Hot 241.86930
## 81 81 Hot 247.90904
## 82 82 Hot 230.28840
## 83 83 Hot 230.59729
## 84 84 Hot 232.19938
## 85 85 Hot 252.32012
## 86 86 Hot 250.76748
## 87 87 Hot 268.92480
## 88 88 Hot 256.38607
## 89 89 Hot 257.36225
## 90 90 Hot 244.63894
## 91 91 Hot 229.92816
## 92 92 Hot 236.48286
## 93 93 Hot 256.94996
## 94 94 Hot 246.85555
## 95 95 Hot 247.78063
## 96 96 Hot 241.28827
## 97 97 Hot 242.74403
## 98 98 Hot 267.99392
## 99 99 Hot 257.82418
## 100 100 Hot 247.44623
## 101 101 Moderate 303.20014
## 102 102 Moderate 291.01047
## 103 103 Moderate 291.65189
## 104 104 Moderate 311.57803
## 105 105 Moderate 292.39245
## 106 106 Moderate 300.25247
## 107 107 Moderate 293.17468
## 108 108 Moderate 292.09074
## 109 109 Moderate 304.41280
## 110 110 Moderate 309.75425
## 111 111 Moderate 301.62941
## 112 112 Moderate 297.18123
## 113 113 Moderate 294.86238
## 114 114 Moderate 310.02812
## 115 115 Moderate 294.40540
## 116 116 Moderate 295.68779
## 117 117 Moderate 304.74504
## 118 118 Moderate 292.08410
## 119 119 Moderate 296.41028
## 120 120 Moderate 287.46371
## 121 121 Moderate 304.77123
## 122 122 Moderate 321.15061
## 123 123 Moderate 301.76714
## 124 124 Moderate 295.30275
## 125 125 Moderate 304.67881
## 126 126 Moderate 284.41204
## 127 127 Moderate 299.98307
## 128 128 Moderate 281.29805
## 129 129 Moderate 311.87001
## 130 130 Moderate 279.69541
## 131 131 Moderate 300.76039
## 132 132 Moderate 280.55105
## 133 133 Moderate 292.57285
## 134 134 Moderate 299.70018
## 135 135 Moderate 298.86084
## 136 136 Moderate 290.80244
## 137 137 Moderate 303.75845
## 138 138 Moderate 290.50727
## 139 139 Moderate 298.75239
## 140 140 Moderate 302.17598
## 141 141 Moderate 292.26457
## 142 142 Moderate 302.26770
## 143 143 Moderate 296.18975
## 144 144 Moderate 296.13528
## 145 145 Moderate 308.00657
## 146 146 Moderate 295.98716
## 147 147 Moderate 317.08453
## 148 148 Moderate 287.69094
## 149 149 Moderate 295.72556
## 150 150 Moderate 299.39427
## 151 151 Moderate 319.97372
## 152 152 Moderate 289.00223
## 153 153 Moderate 298.90926
## 154 154 Moderate 288.17481
## 155 155 Moderate 304.33506
## 156 156 Moderate 303.91514
## 157 157 Moderate 301.40151
## 158 158 Moderate 288.81177
## 159 159 Moderate 309.30665
## 160 160 Moderate 282.27009
## 161 161 Moderate 305.26606
## 162 162 Moderate 297.02861
## 163 163 Moderate 324.34395
## 164 164 Moderate 302.71668
## 165 165 Moderate 289.47238
## 166 166 Moderate 306.54892
## 167 167 Moderate 313.68053
## 168 168 Moderate 304.17179
## 169 169 Moderate 296.96505
## 170 170 Moderate 287.06750
## 171 171 Moderate 301.76520
## 172 172 Moderate 286.43810
## 173 173 Moderate 302.96398
## 174 174 Moderate 285.74479
## 175 175 Moderate 285.74917
## 176 176 Moderate 313.21421
## 177 177 Moderate 305.33980
## 178 178 Moderate 301.52331
## 179 179 Moderate 286.77076
## 180 180 Moderate 289.35915
## 181 181 Moderate 295.59354
## 182 182 Moderate 297.36358
## 183 183 Moderate 299.46071
## 184 184 Moderate 288.39590
## 185 185 Moderate 303.54408
## 186 186 Moderate 315.94896
## 187 187 Moderate 305.27501
## 188 188 Moderate 313.20514
## 189 189 Moderate 280.78445
## 190 190 Moderate 286.83910
## 191 191 Moderate 306.36002
## 192 192 Moderate 302.19550
## 193 193 Moderate 297.98891
## 194 194 Moderate 306.87596
## 195 195 Moderate 300.32485
## 196 196 Moderate 317.07936
## 197 197 Moderate 301.37788
## 198 198 Moderate 308.95559
## 199 199 Moderate 299.74694
## 200 200 Moderate 305.07179
## 201 201 Cool 127.58763
## 202 202 Cool 116.25819
## 203 203 Cool 100.00221
## 204 204 Cool 123.49113
## 205 205 Cool 96.25259
## 206 206 Cool 102.95519
## 207 207 Cool 100.84972
## 208 208 Cool 116.04065
## 209 209 Cool 94.28438
## 210 210 Cool 93.75056
## 211 211 Cool 112.03662
## 212 212 Cool 98.87514
## 213 213 Cool 93.78767
## 214 214 Cool 89.83881
## 215 215 Cool 90.78846
## 216 216 Cool 101.07700
## 217 217 Cool 111.75615
## 218 218 Cool 90.94989
## 219 219 Cool 100.63012
## 220 220 Cool 83.53886
## 221 221 Cool 107.47453
## 222 222 Cool 108.73119
## 223 223 Cool 92.13685
## 224 224 Cool 87.57865
## 225 225 Cool 96.96413
## 226 226 Cool 100.71422
## 227 227 Cool 102.37527
## 228 228 Cool 123.20222
## 229 229 Cool 91.30177
## 230 230 Cool 94.73061
## 231 231 Cool 98.32257
## 232 232 Cool 121.68412
## 233 233 Cool 101.41531
## 234 234 Cool 117.43687
## 235 235 Cool 121.32199
## 236 236 Cool 91.20772
## 237 237 Cool 104.23532
## 238 238 Cool 82.01781
## 239 239 Cool 92.59216
## 240 240 Cool 94.37928
## 241 241 Cool 111.06704
## 242 242 Cool 84.82383
## 243 243 Cool 108.56390
## 244 244 Cool 79.40199
## 245 245 Cool 88.79369
## 246 246 Cool 91.89720
## 247 247 Cool 100.27389
## 248 248 Cool 94.24112
## 249 249 Cool 111.51296
## 250 250 Cool 110.36950
## 251 251 Cool 93.69568
## 252 252 Cool 71.90545
## 253 253 Cool 117.01268
## 254 254 Cool 98.87076
## 255 255 Cool 102.12052
## 256 256 Cool 92.59518
## 257 257 Cool 111.55096
## 258 258 Cool 117.34823
## 259 259 Cool 106.68235
## 260 260 Cool 98.93019
## 261 261 Cool 117.88592
## 262 262 Cool 66.43419
## 263 263 Cool 100.14746
## 264 264 Cool 78.16112
## 265 265 Cool 103.49236
## 266 266 Cool 92.64669
## 267 267 Cool 95.63982
## 268 268 Cool 99.47692
## 269 269 Cool 117.50286
## 270 270 Cool 107.77020
## 271 271 Cool 100.16073
## 272 272 Cool 100.12740
## 273 273 Cool 108.58853
## 274 274 Cool 110.78672
## 275 275 Cool 111.46704
## 276 276 Cool 97.93661
## 277 277 Cool 102.70227
## 278 278 Cool 114.95210
## 279 279 Cool 112.60389
## 280 280 Cool 102.68002
## 281 281 Cool 120.81681
## 282 282 Cool 105.70166
## 283 283 Cool 90.19598
## 284 284 Cool 123.19431
## 285 285 Cool 74.83515
## 286 286 Cool 79.27908
## 287 287 Cool 92.62972
## 288 288 Cool 113.64110
## 289 289 Cool 114.87899
## 290 290 Cool 108.12761
## 291 291 Cool 113.15502
## 292 292 Cool 108.99827
## 293 293 Cool 111.52752
## 294 294 Cool 111.74059
## 295 295 Cool 105.63896
## 296 296 Cool 97.64590
## 297 297 Cool 117.67164
## 298 298 Cool 115.66225
## 299 299 Cool 103.80577
## 300 300 Cool 91.12011
Question 4
newtdatamodel <- aov(Bd_load~Temperature, data=newtdata)
print(newtdatamodel)
## Call:
## aov(formula = Bd_load ~ Temperature, data = newtdata)
##
## Terms:
## Temperature Residuals
## Sum of Squares 2106720.3 34732.2
## Deg. of Freedom 2 297
##
## Residual standard error: 10.81404
## Estimated effects may be unbalanced
summary(newtdatamodel)
## Df Sum Sq Mean Sq F value Pr(>F)
## Temperature 2 2106720 1053360 9007 <2e-16 ***
## Residuals 297 34732 117
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
ggplot(data=newtdata,aes(x=Temperature,y=Bd_load,fill=Temperature)) + geom_boxplot() + scale_fill_manual(values= c("blue","red","green"))
Question 5
First run: F = 1417748, p = <2e-16
Second run: F = 196729, p = <2e-16
Third run: F = 214829, p = <2e-16
After rerunning my analysis several times with different random numbers, we can see that we consistently get a very large F-value and a very small p-value, indicating that there is quite a significant difference regardless of the input data. We do see some variation within both values across the different runs, however we consistently come up with the same conclusion: there is a significant difference in Bd loads between temperature groups.
Question 6
results <- data.frame(sample_size = integer(),
effect_size = numeric(),
trait = character(),
p_value = numeric())
temps <- c("Hot", "Moderate", "Cool")
for (n in seq(10, nrow(newtdata), by = 5)) { # Increase sample size by 5 each iteration
# Randomly sample n observations
temp_data <- newtdata[sample(1:nrow(newtdata), n, replace = TRUE), ]
# Fit the model on the sampled data
mod <- aov(Bd_load ~ Temperature, data = temp_data)
# Extract coefficients and p-values for each level of the Temperature factor
for (temp in temps) {
# Check if the temperature level is a factor level
if (temp %in% levels(temp_data$Temperature)) {
# Extract the effect size (the coefficient) for the specific temperature level
effect_size <- coef(mod)[paste("Temperature", temp, sep = "")]
p_value <- summary(mod)[[1]]["Temperature", temp, 4] # p-value for the temp
# Store results
results <- rbind(results, data.frame(sample_size = n,
trait = temp,
effect_size = effect_size,
p_value = p_value))
}
}
}
Question 7
nGroup <- 3 # number of groups
nName <- c("Hot","Moderate", "Cool") # names of groups
nSize <- c(2,2,2) # number of observations in each group
nMean <- c(250,500,100) # mean of each group
nSD <- c(1.25,1.1,1.2) # standard deviation of each group
ID <- 1:(sum(nSize)) # create id vector for each row
Hatch_time <- c(rnorm(n=nSize[1],mean=nMean[1],sd=nSD[1]),
rnorm(n=nSize[2],mean=nMean[2],sd=nSD[2]),
rnorm(n=nSize[3],mean=nMean[3],sd=nSD[3]))
Temperature <- rep(nName,nSize)
newtdata <- data.frame(ID,Temperature,Bd_load)
newtdataModel <- aov(Bd_load~Temperature,data=newtdata)
z <- summary(newtdatamodel)
list(Fval=unlist(z)[7],probF=unlist(z)[9])
## $Fval
## F value1
## 9007.434
##
## $probF
## Pr(>F)1
## 1.543597e-266
After changing the sample sizes several times, reducing my sample sizes all the way down to 2 for each group still results in significant differences. As I decreased the sample size, my p-value increased until it became closer and closer to 0.05. This indicates that this study did not need such a large sample size to find a significant difference, however large sample sizes can often increase the robustness of statistical tests, as it does in this instance.
Question 8 See text above.