Skip to content

Commit 5998db2

Browse files
Update v61_pedigree_model_fitting.Rmd
1 parent b501bfd commit 5998db2

2 files changed

Lines changed: 66 additions & 19 deletions

File tree

vignettes/articles/v61_pedigree_model_fitting.Rmd

Lines changed: 66 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ bgmisc_testing_env <- Sys.getenv("BGMISC_TESTING", unset = "")
3434
bgmisc_testing <- tolower(bgmisc_testing_env) %in% c("1", "true", "yes")
3535
run_models <- has_openmx && interactive() #&& !bgmisc_testing
3636
rds_dir <- file.path( "inst/extdata/")
37-
rds_file <- file.path(rds_dir, "fitted_multi.rds")
37+
rds_file_ace <- file.path(rds_dir, "fitted_multi_ace.rds")
38+
rds_file_mace <- file.path(rds_dir, "fitted_multi_mace.rds")
3839
```
3940

4041
# Introduction
@@ -44,6 +45,8 @@ This vignette extends the example from `vignette("v60_pedigree_model_fitting", p
4445
# Scaling Up to Many Families
4546

4647

48+
Here we replicate several estimates of heritability across multiple families of red squirrels. We use the `redsquirrels_full` dataset from the `ggpedigree` package, which contains pedigree and phenotypic data on red squirrels from the Kluane region of the Yukon, Canada. The phenotype we analyze is lifetime reproductive success (LRS), which is a count of the number of offspring that survive to a certain age.
49+
4750
```{r krsp-prep}
4851
library(ggpedigree) # for pedigree data)
4952
library(tidyverse)
@@ -118,6 +121,7 @@ for (i in seq_len(n_families)) {
118121
rownames(A_i) <- colnames(A_i) <- obs_ids_i
119122
rownames(Cn_i) <- colnames(Cn_i) <- obs_ids_i
120123
rownames(Mt_i) <- colnames(Mt_i) <- obs_ids_i
124+
121125
add_list[[i]] <- A_i
122126
cn_list[[i]] <- Cn_i
123127
mt_list[[i]] <- Mt_i
@@ -126,7 +130,18 @@ for (i in seq_len(n_families)) {
126130
}
127131
128132
129-
group_models <- lapply(seq_len(n_families), function(i) {
133+
group_models_ace <- lapply(seq_len(n_families), function(i) {
134+
buildOneFamilyGroup(
135+
group_name = paste0("ped", i),
136+
Addmat = add_list[[i]],
137+
Nucmat = cn_list[[i]],
138+
Mtdmat = NULL,
139+
full_df_row = pheno_list[[i]],
140+
obs_ids = obs_ids_list[[i]]
141+
)
142+
})
143+
144+
group_models_mace <- lapply(seq_len(n_families), function(i) {
130145
buildOneFamilyGroup(
131146
group_name = paste0("ped", i),
132147
Addmat = add_list[[i]],
@@ -137,39 +152,71 @@ group_models <- lapply(seq_len(n_families), function(i) {
137152
)
138153
})
139154
140-
multi_model <- buildPedigreeMx(
155+
156+
multi_model_ace <- buildPedigreeMx(
141157
model_name = "MultiPedigreeModel",
142158
vars = start_vars,
143-
group_models = group_models
159+
group_models = group_models_ace
160+
)
161+
162+
multi_model_mace <- buildPedigreeMx(
163+
model_name = "MultiPedigreeModel",
164+
vars = start_vars,
165+
group_models = group_models_mace
144166
)
145167
```
146168
```{r, include = FALSE}
147-
fitted_multi <- NULL # ensure variable exists for later use
169+
fitted_multi_ace <- NULL # ensure variable exists for later use
170+
fitted_multi_mace <- NULL # ensure variable exists for later use
148171
```
149172
```{r, eval = run_models}
150-
fitted_multi <- mxRun(multi_model, intervals= TRUE)
173+
fitted_multi_ace <- mxRun(multi_model_ace, intervals= TRUE)
174+
saveRDS(fitted_multi_ace, "inst/extdata/fitted_multi_ace.rds")
151175
152-
saveRDS(fitted_multi, "inst/extdata/fitted_multi.rds")
176+
fitted_multi_mace <- mxRun(multi_model_mace, intervals= TRUE)
177+
saveRDS(fitted_multi_mace, "inst/extdata/fitted_multi_mace.rds")
153178
```
154179

155180
```
156-
fitted_multi <- mxRun(multi_model)
181+
fitted_multi_ace <- mxRun(multi_model_ace)
182+
fitted_multi_mace <- mxRun(multi_model_mace)
183+
```
184+
```{r, include = FALSE, eval = file.exists(rds_file_ace) && !run_models && file.exists(rds_file_mace)}
185+
fitted_multi_ace <- readRDS(rds_file_ace)
186+
fitted_multi_mace <- readRDS(rds_file_mace)
157187
```
158-
```{r, include = FALSE, eval = file.exists(rds_file) && !run_models}
159-
fitted_multi <- readRDS(rds_file)
188+
```{r, eval = has_openmx && !is.null(fitted_multi_ace)}
189+
summary(fitted_multi_ace)
190+
191+
total_var_ace <- sum(fitted_multi_ace$ModelOne$Vad$values,
192+
fitted_multi_ace$ModelOne$Vcn$values,
193+
#fitted_multi_ace$ModelOne$Vmt$values,
194+
fitted_multi_ace$ModelOne$Ver$values)
160195
```
161-
```{r, eval = has_openmx && !is.null(fitted_multi)}
162-
summary(fitted_multi)
163196

164-
total_var <- sum(fitted_multi$ModelOne$Vad$values, fitted_multi$ModelOne$Vcn$values, fitted_multi$ModelOne$Vmt$values, fitted_multi$ModelOne$Ver$values)
197+
198+
```{r total-fam-results, eval = has_openmx && !is.null(fitted_multi_ace)}
199+
cat("Additive genetic (Vad):", fitted_multi_ace$ModelOne$Vad$values/total_var_ace, "\n")
200+
cat("Common nuclear (Vcn):", fitted_multi_ace$ModelOne$Vcn$values/total_var_ace, "\n")
201+
cat("Unique environ. (Ver):", fitted_multi_ace$ModelOne$Ver$values/total_var_ace, "\n")
165202
```
166203

204+
As you can see, we have fit a multigroup pedigree model using `r n_families` families of several thousand squirrels. The model includes additive genetic variance (Vad), common nuclear environmental variance (Vcn), and unique environmental variance (Ver). The mitochondrial variance component (Vmt) was included in the MACE model but not estimated in the ACE model. The results show the proportion of total variance attributed to each component, which can be interpreted as heritability and environmental contributions to the phenotype of interest (LRS) in these
205+
squirrels.
206+
207+
```{r, eval = has_openmx && !is.null(fitted_multi_mace)}
208+
summary(fitted_multi_mace)
167209
168-
```{r single-fam-results, eval = has_openmx && !is.null(fitted_multi)}
169-
cat("Additive genetic (Vad):", fitted_multi$ModelOne$Vad$values/total_var, "\n")
170-
cat("Common nuclear (Vcn):", fitted_multi$ModelOne$Vcn$values/total_var, "\n")
171-
cat("Mitochondrial (Vmt):", fitted_multi$ModelOne$Vmt$values/total_var, "\n")
172-
cat("Unique environ. (Ver):", fitted_multi$ModelOne$Ver$values/total_var, "\n")
210+
total_var_mace <- sum(fitted_multi_mace$ModelOne$Vad$values,
211+
fitted_multi_mace$ModelOne$Vcn$values,
212+
fitted_multi_mace$ModelOne$Vmt$values,
213+
fitted_multi_mace$ModelOne$Ver$values)
173214
```
174215

175-
As you can see, we have fit a multigroup pedigree model using `r n_families` of squirrels.
216+
217+
```{r total-fam-results-mace, eval = has_openmx && !is.null(fitted_multi_ace)}
218+
cat("Additive genetic (Vad):", fitted_multi_mace$ModelOne$Vad$values/total_var_mace, "\n")
219+
cat("Common nuclear (Vcn):", fitted_multi_mace$ModelOne$Vcn$values/total_var_mace, "\n")
220+
cat("Mitochondrial (Vmt):", fitted_multi_mace$ModelOne$Vmt$values/total_var_mace, "\n")
221+
cat("Unique environ. (Ver):", fitted_multi_mace$ModelOne$Ver$values/total_var_mace, "\n")
222+
```

0 commit comments

Comments
 (0)