Last updated: 2022-02-15
Checks: 6 1
Knit directory: HairManikin_manuscript/
This reproducible R Markdown analysis was created with workflowr (version 1.6.2). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.
The R Markdown file has unstaged changes. To know which version of the R Markdown file created these results, you’ll want to first commit it to the Git repo. If you’re still working on the analysis, you can ignore this warning. When you’re finished, you can run wflow_publish
to commit the R Markdown file and build the HTML.
Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.
The command set.seed(20211024)
was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.
Great job! Recording the operating system, R version, and package versions is critical for reproducibility.
Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.
Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.
Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.
The results in this page were generated with repository version 3fc4c3e. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.
Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish
or wflow_git_commit
). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:
Ignored files:
Ignored: .DS_Store
Ignored: .RData
Ignored: .Rhistory
Ignored: .Rproj.user/
Ignored: data/.DS_Store
Ignored: data/.Rhistory
Ignored: data/current/.DS_Store
Ignored: data/raw_manikin_output/.DS_Store
Unstaged changes:
Modified: analysis/analysis.Rmd
Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.
These are the previous versions of the repository in which changes were made to the R Markdown (analysis/analysis.Rmd
) and HTML (docs/analysis.html
) files. If you’ve configured a remote Git repository (see ?wflow_git_remote
), click on the hyperlinks in the table below to view the files as they were in that past version.
File | Version | Author | Date | Message |
---|---|---|---|---|
Rmd | e9fa430 | GitHub | 2022-01-30 | Update analysis.Rmd |
html | bb36720 | Tina Lasisi | 2022-01-19 | Build site. |
Rmd | 05389ae | Tina Lasisi | 2022-01-19 | Added figures + analysis placeholders |
html | 05389ae | Tina Lasisi | 2022-01-19 | Added figures + analysis placeholders |
Rmd | bb99f1d | Tina Lasisi | 2022-01-08 | Update analysis.rmd + add data |
html | bb99f1d | Tina Lasisi | 2022-01-08 | Update analysis.rmd + add data |
Rmd | 0a50ef7 | Tina Lasisi | 2022-01-07 | Adding main analysis file |
Here we calculate solar influx and the temperature corrected heat loss for each experiment.
Solar influx (difference between heat loss with radiation on and off) is calculated as:
\[Solar\ influx \ (W/m^2) = heatflux_{(radiation)}- heatflux_{(no \ radiation)}\]
# A tibble: 59 × 7
wig wind wet_dry trial on off influx
<fct> <dbl> <fct> <fct> <dbl> <dbl> <dbl>
1 Nude 0.3 wet 1 90.9 153. 61.9
2 Nude 0.3 wet 2 86.7 151. 64.7
3 Nude 1 wet 1 227. 254. 27.2
4 Nude 2.5 wet 1 276. 288. 11.8
5 Nude 2.5 wet 2 272. 289. 17.1
6 LowCurv 0.3 wet 1 30 71.1 41.1
7 LowCurv 0.3 wet 2 27.6 63.8 36.2
8 LowCurv 1 wet 1 73.3 103. 29.8
9 LowCurv 1 wet 2 80.9 103. 21.9
10 LowCurv 2.5 wet 1 138. 149. 11.9
# … with 49 more rows
Here we plot the solar influx.
A plot of solar influx shows an outlier in the wet experiments where the heat loss with solar radiation was somehow less than the heat loss without solar radiation. We will exclude this outlier.
For the dry heat loss experiments (measuring dry heat resistance), we had to run some experiments at different temperatures to create a large enough gradient between skin/surface temperature and ambient temperature. The manikin is only able to produce results by measuring heat loss, and at 0.3 m/s wind speed, we found that the straight hair and nude (no hair) conditions led to overheating of the manikin. Subsequently, we had to adjust the temperatures to create a temperature gradient.
We thus need to bring all the measurements of heat loss to the same temperature. As heat resistance is temperature independent, we can use this to calculate the expected heat loss at various temperatures. We estimate heat loss at 30C with the following calculation.
\[Heat\ loss (W/m^2)_{(30C\ no\ radiation)} = 5/heat\ resistance_{(no \ radiation)} \]
# A tibble: 36 × 5
wig wind wet_dry resistance trial
<fct> <dbl> <fct> <dbl> <fct>
1 Nude 0.3 dry 0.113 1
2 Nude 0.3 dry 0.112 2
3 Nude 0.3 dry 0.112 3
4 Nude 1 dry 0.099 1
5 Nude 1 dry 0.101 2
6 Nude 1 dry 0.101 3
7 Nude 2.5 dry 0.058 1
8 Nude 2.5 dry 0.056 2
9 Nude 2.5 dry 0.058 3
10 LowCurv 0.3 dry 0.42 1
# … with 26 more rows
# A tibble: 36 × 7
wig wind wet_dry trial influx resistance off
<fct> <dbl> <fct> <fct> <dbl> <dbl> <dbl>
1 Nude 0.3 dry 1 175. 0.113 44.2
2 Nude 0.3 dry 2 168. 0.112 44.6
3 Nude 0.3 dry 3 176. 0.112 44.6
4 Nude 1 dry 1 176 0.099 50.5
5 Nude 1 dry 2 162. 0.101 49.5
6 Nude 1 dry 3 171. 0.101 49.5
7 Nude 2.5 dry 1 153. 0.058 86.2
8 Nude 2.5 dry 2 169. 0.056 89.3
9 Nude 2.5 dry 3 158. 0.058 86.2
10 LowCurv 0.3 dry 1 62.6 0.42 11.9
# … with 26 more rows
To calculate the heat loss at 30C with radiation, we subtract the solar influx from the temperature corrected heat loss:
\[Heat\ loss (W/m^2)_{(30C\ with\ radiation)} = Heat\ loss (W/m^2)_{(30C\ no\ radiation)}- solar\ influx(W/m^2) \]
# A tibble: 36 × 5
wig wind wet_dry resistance trial
<fct> <dbl> <fct> <dbl> <fct>
1 Nude 0.3 dry 0.237 1
2 Nude 0.3 dry 0.224 2
3 Nude 0.3 dry 0.234 3
4 Nude 1 dry 0.324 1
5 Nude 1 dry 0.292 2
6 Nude 1 dry 0.318 3
7 Nude 2.5 dry 0.088 1
8 Nude 2.5 dry 0.089 2
9 Nude 2.5 dry 0.091 3
10 LowCurv 0.3 dry 1.46 1
# … with 26 more rows
# A tibble: 36 × 7
wig wind wet_dry trial influx off on
<fct> <dbl> <fct> <fct> <dbl> <dbl> <dbl>
1 Nude 0.3 dry 1 175. 44.2 -131.
2 Nude 0.3 dry 2 168. 44.6 -124.
3 Nude 0.3 dry 3 176. 44.6 -131.
4 Nude 1 dry 1 176 50.5 -125.
5 Nude 1 dry 2 162. 49.5 -113.
6 Nude 1 dry 3 171. 49.5 -122.
7 Nude 2.5 dry 1 153. 86.2 -66.7
8 Nude 2.5 dry 2 169. 89.3 -79.9
9 Nude 2.5 dry 3 158. 86.2 -72.2
10 LowCurv 0.3 dry 1 62.6 11.9 -50.7
# … with 26 more rows
# A tibble: 94 × 7
wig wind wet_dry trial influx off on
<fct> <dbl> <fct> <fct> <dbl> <dbl> <dbl>
1 Nude 0.3 dry 1 175. 44.2 -131.
2 Nude 0.3 dry 2 168. 44.6 -124.
3 Nude 0.3 dry 3 176. 44.6 -131.
4 Nude 1 dry 1 176 50.5 -125.
5 Nude 1 dry 2 162. 49.5 -113.
6 Nude 1 dry 3 171. 49.5 -122.
7 Nude 2.5 dry 1 153. 86.2 -66.7
8 Nude 2.5 dry 2 169. 89.3 -79.9
9 Nude 2.5 dry 3 158. 86.2 -72.2
10 LowCurv 0.3 dry 1 62.6 11.9 -50.7
# … with 84 more rows
# A tibble: 246 × 6
wig wind wet_dry trial var heatloss
<fct> <dbl> <fct> <fct> <chr> <dbl>
1 Nude 0.3 dry 1 influx 175.
2 Nude 0.3 dry 1 off 44.2
3 Nude 0.3 dry 1 on -131.
4 Nude 0.3 dry 2 influx 168.
5 Nude 0.3 dry 2 off 44.6
6 Nude 0.3 dry 2 on -124.
7 Nude 0.3 dry 3 influx 176.
8 Nude 0.3 dry 3 off 44.6
9 Nude 0.3 dry 3 on -131.
10 Nude 1 dry 1 influx 176
# … with 236 more rows
Here, we model the effect of the wig
variable on influx
while correcting for wind
. In case of solar influx, having hair will decrease solar influx when the hair is dry. The curvature of hair will decrease more solar influx.
Call:
lm(formula = influx ~ wind + wig, data = df_dry)
Residuals:
Min 1Q Median 3Q Max
-8.106 -3.844 1.099 2.763 9.053
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 175.4796 1.3680 128.275 < 2e-16 ***
wind -6.1330 0.6134 -9.998 6.46e-15 ***
wigLowCurv -110.1778 1.5923 -69.195 < 2e-16 ***
wigMidCurv -132.2778 1.5923 -83.075 < 2e-16 ***
wigHighCurv -152.0333 1.5923 -95.482 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 4.777 on 67 degrees of freedom
Multiple R-squared: 0.994, Adjusted R-squared: 0.9936
F-statistic: 2755 on 4 and 67 DF, p-value: < 2.2e-16
Here, we repeat the same modelling process for the wet data.
When the hair is sweaty, having curliest hair would decrease solar influx.
Call:
lm(formula = influx ~ wind + wig, data = df_wet)
Coefficients:
(Intercept) wind wigLowCurv wigMidCurv wigHighCurv
53.511 -12.857 -9.392 -15.259 -10.537
Call:
lm(formula = influx ~ wind + wig, data = df_wet)
Residuals:
Min 1Q Median 3Q Max
-13.4541 -4.2173 -0.8525 3.9887 15.0463
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 53.511 4.577 11.690 1.50e-09 ***
wind -12.857 1.969 -6.529 5.15e-06 ***
wigLowCurv -9.392 5.102 -1.841 0.08318 .
wigMidCurv -15.259 5.102 -2.991 0.00822 **
wigHighCurv -10.537 5.361 -1.966 0.06591 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 8.425 on 17 degrees of freedom
Multiple R-squared: 0.7498, Adjusted R-squared: 0.6909
F-statistic: 12.74 on 4 and 17 DF, p-value: 5.664e-05
Here, we model the effect of the wig
variable on the off
(heat loss without radiation) variable while correcting for wind
.
when the radiation is off, having straight or curly hair will decrease the heat loss.
# A tibble: 72 × 7
wig wind wet_dry trial influx off on
<fct> <dbl> <fct> <fct> <dbl> <dbl> <dbl>
1 Nude 0.3 dry 1 175. 44.2 -131.
2 Nude 0.3 dry 2 168. 44.6 -124.
3 Nude 0.3 dry 3 176. 44.6 -131.
4 Nude 1 dry 1 176 50.5 -125.
5 Nude 1 dry 2 162. 49.5 -113.
6 Nude 1 dry 3 171. 49.5 -122.
7 Nude 2.5 dry 1 153. 86.2 -66.7
8 Nude 2.5 dry 2 169. 89.3 -79.9
9 Nude 2.5 dry 3 158. 86.2 -72.2
10 LowCurv 0.3 dry 1 62.6 11.9 -50.7
# … with 62 more rows
Call:
lm(formula = off ~ wind + wig, data = df_dry_off[1:36, ])
Residuals:
Min 1Q Median 3Q Max
-8.0046 -4.0646 0.1855 2.7241 14.8000
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 46.192 2.279 20.27 < 2e-16 ***
wind 11.317 1.022 11.07 2.65e-12 ***
wigLowCurv -40.449 2.653 -15.25 5.91e-16 ***
wigMidCurv -40.838 2.653 -15.39 4.54e-16 ***
wigHighCurv -38.445 2.653 -14.49 2.37e-15 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 5.627 on 31 degrees of freedom
Multiple R-squared: 0.9373, Adjusted R-squared: 0.9292
F-statistic: 115.8 on 4 and 31 DF, p-value: < 2.2e-16
when radiation is on and hair is dry, the heat loss would increase given the presence of hair. The curvature of hair would increase the heat loss.
Call:
lm(formula = on ~ wind + wig, data = df_dry_on[1:36, ])
Residuals:
Min 1Q Median 3Q Max
-13.6579 -4.8720 -0.0048 3.3664 18.9682
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -129.287 2.854 -45.29 < 2e-16 ***
wind 17.450 1.280 13.63 1.23e-14 ***
wigLowCurv 69.729 3.322 20.99 < 2e-16 ***
wigMidCurv 91.439 3.322 27.52 < 2e-16 ***
wigHighCurv 113.588 3.322 34.19 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 7.048 on 31 degrees of freedom
Multiple R-squared: 0.9798, Adjusted R-squared: 0.9771
F-statistic: 375 on 4 and 31 DF, p-value: < 2.2e-16
Here, we model the effect of the wig
variable on the off
(heat loss without radiation) variable while correcting for wind
.
when the radiation is off, having straight or curly hair will decrease the heat loss.
Call:
lm(formula = off ~ wind + wig, data = df_wet_off)
Residuals:
Min 1Q Median 3Q Max
-32.423 -5.988 2.672 5.875 40.867
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 171.047 9.142 18.71 8.88e-13 ***
wind 42.586 3.933 10.83 4.77e-09 ***
wigLowCurv -116.039 10.191 -11.39 2.24e-09 ***
wigMidCurv -129.155 10.191 -12.67 4.35e-10 ***
wigHighCurv -134.404 10.707 -12.55 5.04e-10 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 16.83 on 17 degrees of freedom
Multiple R-squared: 0.955, Adjusted R-squared: 0.9444
F-statistic: 90.24 on 4 and 17 DF, p-value: 3.238e-11
when the radiation is on, having straight or curly hair will decrease the heat loss.
Call:
lm(formula = on ~ wind + wig, data = df_wet_on)
Residuals:
Min 1Q Median 3Q Max
-47.469 -11.283 4.403 6.848 54.322
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 117.536 12.729 9.234 4.91e-08 ***
wind 55.442 5.476 10.124 1.29e-08 ***
wigLowCurv -106.646 14.189 -7.516 8.45e-07 ***
wigMidCurv -113.896 14.189 -8.027 3.49e-07 ***
wigHighCurv -123.867 14.908 -8.309 2.17e-07 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 23.43 on 17 degrees of freedom
Multiple R-squared: 0.9255, Adjusted R-squared: 0.9079
F-statistic: 52.77 on 4 and 17 DF, p-value: 2.307e-09
R version 4.1.2 (2021-11-01)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Big Sur 10.16
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] ggstatsplot_0.9.0 fs_1.5.0 kableExtra_1.3.4 knitr_1.36
[5] forcats_0.5.1 stringr_1.4.0 dplyr_1.0.7 purrr_0.3.4
[9] readr_2.0.2 tidyr_1.1.4 tibble_3.1.5 ggplot2_3.3.5
[13] tidyverse_1.3.1 workflowr_1.6.2
loaded via a namespace (and not attached):
[1] bit64_4.0.5 lubridate_1.8.0 RColorBrewer_1.1-2
[4] insight_0.14.5 webshot_0.5.2 httr_1.4.2
[7] rprojroot_2.0.2 tools_4.1.2 backports_1.2.1
[10] utf8_1.2.2 R6_2.5.1 statsExpressions_1.2.0
[13] DBI_1.1.1 colorspace_2.0-2 withr_2.4.2
[16] tidyselect_1.1.1 bit_4.0.4 compiler_4.1.2
[19] git2r_0.28.0 performance_0.8.0 cli_3.1.0
[22] rvest_1.0.2 xml2_1.3.2 labeling_0.4.2
[25] bayestestR_0.11.5 BWStest_0.2.2 scales_1.1.1
[28] mvtnorm_1.1-3 mc2d_0.1-21 multcompView_0.1-8
[31] systemfonts_1.0.3 digest_0.6.28 rmarkdown_2.11
[34] svglite_2.0.0 WRS2_1.1-3 pkgconfig_2.0.3
[37] htmltools_0.5.2 highr_0.9 dbplyr_2.1.1
[40] fastmap_1.1.0 rlang_0.4.12 readxl_1.3.1
[43] rstudioapi_0.13 SuppDists_1.1-9.5 farver_2.1.0
[46] jquerylib_0.1.4 generics_0.1.0 jsonlite_1.7.2
[49] vroom_1.5.5 magrittr_2.0.1 patchwork_1.1.1
[52] parameters_0.15.0 Rcpp_1.0.7 munsell_0.5.0
[55] fansi_0.5.0 lifecycle_1.0.1 stringi_1.7.5
[58] whisker_0.4 yaml_2.2.1 MASS_7.3-54
[61] plyr_1.8.6 paletteer_1.4.0 grid_4.1.2
[64] parallel_4.1.2 promises_1.2.0.1 crayon_1.4.1
[67] PMCMRplus_1.9.3 haven_2.4.3 hms_1.1.1
[70] zeallot_0.1.0 pillar_1.6.4 kSamples_1.2-9
[73] reprex_2.0.1 glue_1.4.2 evaluate_0.14
[76] modelr_0.1.8 vctrs_0.3.8 tzdb_0.1.2
[79] httpuv_1.6.3 cellranger_1.1.0 gtable_0.3.0
[82] rematch2_2.1.2 reshape_0.8.8 assertthat_0.2.1
[85] datawizard_0.2.1 cachem_1.0.6 xfun_0.27
[88] correlation_0.7.1 broom_0.7.9 Rmpfr_0.8-7
[91] later_1.3.0 viridisLite_0.4.0 memoise_2.0.0
[94] gmp_0.6-2.1 ellipsis_0.3.2