Last updated: 2022-03-06
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 d8ffbe2. 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
Untracked files:
Untracked: data/raw_manikin_output/~$2020_Dec_GH_WigData_reworked.xlsx
Untracked: output/plt_dry_combo.png
Untracked: output/plt_sweat_max_zero.png
Unstaged changes:
Modified: analysis/analysis.Rmd
Modified: output/plt_heatloss_line.png
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 | a796ceb | Ginawsy | 2022-02-21 | updated sum_manikin_df variable |
Rmd | 520dcfc | GitHub | 2022-02-16 | Update analysis.Rmd |
Rmd | 9c5b0d8 | Tina Lasisi | 2022-02-15 | Update analysis + figures |
html | 9c5b0d8 | Tina Lasisi | 2022-02-15 | Update analysis + figures |
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)}\]
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)} \]
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) \]
We use the dry and wet data to infer the amount of sweat that a scalp could evaporate under conditions of solar radiation at 30C (maximum sweat capacity) and how much evaporative cooling from sweat would be needed to cancel out any heat gain (zero heat gain sweat).
Here, we plot the sweat rate potential (left) and the sweat rate required to cancel out heat gain at \(T_{ambient} = 30^\circ C\).
What emerges is that while heat loss potential is higher without hair as a barrier (i.e. the “nude” condition), the potential sweat far exceeds the physiologically possible sweat rate for humans. The plot for zero heat gain shoes that a nude scalp requires the most sweat and this requirement is inversely correlated with hair curvature.
Here, we model the effect of the wig
variable on the off
(heat loss without radiation) variable while correcting for wind
.
Without radiation, having hair will reduce the heat loss.
Call:
lm(formula = off ~ wind + wig, data = df_dry_off)
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
With radiation, there is a net increase in heat (i.e. heat gain) without any hair. Additonally, we observe that heat gain decreases with increasingly curled hair.
Call:
lm(formula = on ~ wind + wig, data = df_dry_on)
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 influx
while correcting for wind
.
In the dry heat loss experiments, we see that all hair (regardless of curliness) decreases the solar influx. Additionally, the curlier the hair, the lower the 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 2.0111 87.254 < 2e-16 ***
wind -6.1330 0.9018 -6.801 1.29e-07 ***
wigLowCurv -110.1778 2.3409 -47.067 < 2e-16 ***
wigMidCurv -132.2778 2.3409 -56.508 < 2e-16 ***
wigHighCurv -152.0333 2.3409 -64.948 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 4.966 on 31 degrees of freedom
Multiple R-squared: 0.994, Adjusted R-squared: 0.9932
F-statistic: 1275 on 4 and 31 DF, p-value: < 2.2e-16
Here, we repeat the same modelling process for the evaporative resistance data from the wet experiments.
Here, we model the effect of the wig
variable on the off
(heat loss without radiation) variable while correcting for wind
.
Without solar radiation, all hair (regardless of texture) decreases evaporative resistance.
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
With radiation, hair decreases evaporative resistance.
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
Combining the above data to calculate solar influx, we see that there is not a considerable effect of radiation on evaporative resistance.
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
Version | Author | Date |
---|---|---|
9c5b0d8 | Tina Lasisi | 2022-02-15 |
Version | Author | Date |
---|---|---|
9c5b0d8 | Tina Lasisi | 2022-02-15 |
Version | Author | Date |
---|---|---|
9c5b0d8 | Tina Lasisi | 2022-02-15 |
Version | Author | Date |
---|---|---|
9c5b0d8 | Tina Lasisi | 2022-02-15 |
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
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] gtsummary_1.5.2 jtools_2.1.4 patchwork_1.1.1 gridExtra_2.3
[5] ggstatsplot_0.9.0 fs_1.5.2 kableExtra_1.3.4 knitr_1.37
[9] forcats_0.5.1 stringr_1.4.0 dplyr_1.0.8 purrr_0.3.4
[13] readr_2.0.2 tidyr_1.1.4 tibble_3.1.6 ggplot2_3.3.5
[17] tidyverse_1.3.1 workflowr_1.6.2
loaded via a namespace (and not attached):
[1] colorspace_2.0-2 ellipsis_0.3.2 rprojroot_2.0.2
[4] parameters_0.15.0 mc2d_0.1-21 rstudioapi_0.13
[7] farver_2.1.0 bit64_4.0.5 fansi_0.5.0
[10] mvtnorm_1.1-3 lubridate_1.8.0 xml2_1.3.2
[13] cachem_1.0.6 SuppDists_1.1-9.5 zeallot_0.1.0
[16] jsonlite_1.7.2 gt_0.4.0 broom_0.7.12
[19] Rmpfr_0.8-7 dbplyr_2.1.1 compiler_4.1.2
[22] httr_1.4.2 PMCMRplus_1.9.3 backports_1.2.1
[25] assertthat_0.2.1 fastmap_1.1.0 cli_3.2.0
[28] later_1.3.0 htmltools_0.5.2 tools_4.1.2
[31] gmp_0.6-2.1 gtable_0.3.0 glue_1.6.2
[34] Rcpp_1.0.7 cellranger_1.1.0 jquerylib_0.1.4
[37] vctrs_0.3.8 svglite_2.0.0 broom.helpers_1.6.0
[40] insight_0.14.5 xfun_0.29 rvest_1.0.2
[43] lifecycle_1.0.1 MASS_7.3-54 scales_1.1.1
[46] vroom_1.5.5 hms_1.1.1 promises_1.2.0.1
[49] parallel_4.1.2 RColorBrewer_1.1-2 rematch2_2.1.2
[52] yaml_2.2.1 memoise_2.0.0 pander_0.6.4
[55] reshape_0.8.8 stringi_1.7.5 highr_0.9
[58] paletteer_1.4.0 bayestestR_0.11.5 rlang_1.0.2
[61] pkgconfig_2.0.3 systemfonts_1.0.3 evaluate_0.14
[64] labeling_0.4.2 bit_4.0.4 tidyselect_1.1.1
[67] plyr_1.8.6 magrittr_2.0.2 R6_2.5.1
[70] generics_0.1.0 multcompView_0.1-8 BWStest_0.2.2
[73] DBI_1.1.1 pillar_1.6.4 haven_2.4.3
[76] whisker_0.4 withr_2.4.2 datawizard_0.2.1
[79] performance_0.8.0 modelr_0.1.8 crayon_1.4.1
[82] WRS2_1.1-3 utf8_1.2.2 correlation_0.7.1
[85] tzdb_0.1.2 rmarkdown_2.11 kSamples_1.2-9
[88] grid_4.1.2 readxl_1.3.1 git2r_0.28.0
[91] reprex_2.0.1 digest_0.6.28 webshot_0.5.2
[94] httpuv_1.6.3 statsExpressions_1.2.0 munsell_0.5.0
[97] viridisLite_0.4.0