From 04a1349b579d3d3c8baad497a791f0d12b68f8a0 Mon Sep 17 00:00:00 2001 From: Mason Garrison Date: Fri, 7 May 2021 09:20:31 -0400 Subject: [PATCH 1/4] testing --- ...discord_data.R => func_discord_data_alt.R} | 0 ...ession.R => func_discord_regression_alt.R} | 0 R/{func_kinsim.R => func_kinsim_alt.R} | 0 ..._regression.R => helpers_regression_alt.R} | 0 ..._simulation.R => helpers_simulation_alt.R} | 0 renv.lock | 718 ------ testing.Rmd | 153 -- testing.nb.html | 2135 ----------------- 8 files changed, 3006 deletions(-) rename R/{func_discord_data.R => func_discord_data_alt.R} (100%) rename R/{func_discord_regression.R => func_discord_regression_alt.R} (100%) rename R/{func_kinsim.R => func_kinsim_alt.R} (100%) rename R/{helpers_regression.R => helpers_regression_alt.R} (100%) rename R/{helpers_simulation.R => helpers_simulation_alt.R} (100%) delete mode 100644 renv.lock delete mode 100644 testing.Rmd delete mode 100644 testing.nb.html diff --git a/R/func_discord_data.R b/R/func_discord_data_alt.R similarity index 100% rename from R/func_discord_data.R rename to R/func_discord_data_alt.R diff --git a/R/func_discord_regression.R b/R/func_discord_regression_alt.R similarity index 100% rename from R/func_discord_regression.R rename to R/func_discord_regression_alt.R diff --git a/R/func_kinsim.R b/R/func_kinsim_alt.R similarity index 100% rename from R/func_kinsim.R rename to R/func_kinsim_alt.R diff --git a/R/helpers_regression.R b/R/helpers_regression_alt.R similarity index 100% rename from R/helpers_regression.R rename to R/helpers_regression_alt.R diff --git a/R/helpers_simulation.R b/R/helpers_simulation_alt.R similarity index 100% rename from R/helpers_simulation.R rename to R/helpers_simulation_alt.R diff --git a/renv.lock b/renv.lock deleted file mode 100644 index 135009b..0000000 --- a/renv.lock +++ /dev/null @@ -1,718 +0,0 @@ -{ - "R": { - "Version": "3.6.2", - "Repositories": [ - { - "Name": "CRAN", - "URL": "https://cran.rstudio.com" - } - ] - }, - "Packages": { - "BH": { - "Package": "BH", - "Version": "1.72.0-3", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "8f9ce74c6417d61f0782cbae5fd2b7b0" - }, - "DBI": { - "Package": "DBI", - "Version": "1.1.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "4744be45519d675af66c28478720fce5" - }, - "MASS": { - "Package": "MASS", - "Version": "7.3-51.5", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "9efe80472b21189ebab1b74169808c26" - }, - "Matrix": { - "Package": "Matrix", - "Version": "1.2-18", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "08588806cba69f04797dab50627428ed" - }, - "R6": { - "Package": "R6", - "Version": "2.4.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "292b54f8f4b94669b08f94e5acce6be2" - }, - "RColorBrewer": { - "Package": "RColorBrewer", - "Version": "1.1-2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "e031418365a7f7a766181ab5a41a5716" - }, - "Rcpp": { - "Package": "Rcpp", - "Version": "1.0.5", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "125dc7a0ed375eb68c0ce533b48d291f" - }, - "askpass": { - "Package": "askpass", - "Version": "1.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "e8a22846fff485f0be3770c2da758713" - }, - "assertthat": { - "Package": "assertthat", - "Version": "0.2.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "50c838a310445e954bc13f26f26a6ecf" - }, - "backports": { - "Package": "backports", - "Version": "1.1.8", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "3ef0eac19317fd03c0c854aed581d473" - }, - "base64enc": { - "Package": "base64enc", - "Version": "0.1-3", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "543776ae6848fde2f48ff3816d0628bc" - }, - "blob": { - "Package": "blob", - "Version": "1.2.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "9addc7e2c5954eca5719928131fed98c" - }, - "broom": { - "Package": "broom", - "Version": "0.7.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "2ca5ae42f3bfd149504d63c833c2be26" - }, - "callr": { - "Package": "callr", - "Version": "3.4.3", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "643163a00cb536454c624883a10ae0bc" - }, - "cellranger": { - "Package": "cellranger", - "Version": "1.1.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "f61dbaec772ccd2e17705c1e872e9e7c" - }, - "cli": { - "Package": "cli", - "Version": "2.0.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "ff0becff7bfdfe3f75d29aff8f3172dd" - }, - "clipr": { - "Package": "clipr", - "Version": "0.7.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "08cf4045c149a0f0eaf405324c7495bd" - }, - "colorspace": { - "Package": "colorspace", - "Version": "1.4-1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "6b436e95723d1f0e861224dd9b094dfb" - }, - "cpp11": { - "Package": "cpp11", - "Version": "0.2.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "c4c83167f43ca762a9fa998d4fead3ae" - }, - "crayon": { - "Package": "crayon", - "Version": "1.3.4", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b" - }, - "curl": { - "Package": "curl", - "Version": "4.3", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "2b7d10581cc730804e9ed178c8374bd6" - }, - "data.table": { - "Package": "data.table", - "Version": "1.12.8", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "cd711af60c47207a776213a368626369" - }, - "dbplyr": { - "Package": "dbplyr", - "Version": "1.4.4", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "2ba60a82dd9b6ca3cee0d8e2574cdf0e" - }, - "desc": { - "Package": "desc", - "Version": "1.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "6c8fe8fa26a23b79949375d372c7b395" - }, - "diffobj": { - "Package": "diffobj", - "Version": "0.3.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "cfb12c2c0abfa12b08b4a84d6fde9792" - }, - "digest": { - "Package": "digest", - "Version": "0.6.25", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "f697db7d92b7028c4b3436e9603fb636" - }, - "dplyr": { - "Package": "dplyr", - "Version": "1.0.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "d0509913b27ea898189ee664b6030dc2" - }, - "ellipsis": { - "Package": "ellipsis", - "Version": "0.3.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "fd2844b3a43ae2d27e70ece2df1b4e2a" - }, - "evaluate": { - "Package": "evaluate", - "Version": "0.14", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "ec8ca05cffcc70569eaaad8469d2a3a7" - }, - "fansi": { - "Package": "fansi", - "Version": "0.4.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "7fce217eaaf8016e72065e85c73027b5" - }, - "farver": { - "Package": "farver", - "Version": "2.0.3", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "dad6793a5a1f73c8e91f1a1e3e834b05" - }, - "forcats": { - "Package": "forcats", - "Version": "0.5.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "1cb4279e697650f0bd78cd3601ee7576" - }, - "fs": { - "Package": "fs", - "Version": "1.5.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "44594a07a42e5f91fac9f93fda6d0109" - }, - "generics": { - "Package": "generics", - "Version": "0.0.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "b8cff1d1391fd1ad8b65877f4c7f2e53" - }, - "ggplot2": { - "Package": "ggplot2", - "Version": "3.3.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "4ded8b439797f7b1693bd3d238d0106b" - }, - "glue": { - "Package": "glue", - "Version": "1.4.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "f43e0d5e85ccb0a4045670c0607ee504" - }, - "gtable": { - "Package": "gtable", - "Version": "0.3.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "ac5c6baf7822ce8732b343f14c072c4d" - }, - "haven": { - "Package": "haven", - "Version": "2.3.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "221d0ad75dfa03ebf17b1a4cc5c31dfc" - }, - "highr": { - "Package": "highr", - "Version": "0.8", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "4dc5bb88961e347a0f4d8aad597cbfac" - }, - "hms": { - "Package": "hms", - "Version": "0.5.3", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "726671f634529d470545f9fd1a9d1869" - }, - "htmltools": { - "Package": "htmltools", - "Version": "0.5.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "7d651b7131794fe007b1ad6f21aaa401" - }, - "httr": { - "Package": "httr", - "Version": "1.4.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "a525aba14184fec243f9eaec62fbed43" - }, - "isoband": { - "Package": "isoband", - "Version": "0.2.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "6e58bd3d6b3dd82a944cd6f05ade228f" - }, - "janitor": { - "Package": "janitor", - "Version": "2.0.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "7eb42c3bb09e2019b97de69d2ea9dfff" - }, - "jsonlite": { - "Package": "jsonlite", - "Version": "1.7.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "2657f20b9a74c996c602e74ebe540b06" - }, - "knitr": { - "Package": "knitr", - "Version": "1.29", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "e5f4c41c17df8cdf7b0df12117c0d99a" - }, - "labeling": { - "Package": "labeling", - "Version": "0.3", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "73832978c1de350df58108c745ed0e3e" - }, - "lattice": { - "Package": "lattice", - "Version": "0.20-40", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "61339152c288b871facca5f68f401f89" - }, - "lifecycle": { - "Package": "lifecycle", - "Version": "0.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "361811f31f71f8a617a9a68bf63f1f42" - }, - "lubridate": { - "Package": "lubridate", - "Version": "1.7.9", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "fc1c91e2e8d9e1fc932e75aa1ed989b7" - }, - "magrittr": { - "Package": "magrittr", - "Version": "1.5", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "1bb58822a20301cee84a41678e25d9b7" - }, - "markdown": { - "Package": "markdown", - "Version": "1.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "61e4a10781dd00d7d81dd06ca9b94e95" - }, - "mgcv": { - "Package": "mgcv", - "Version": "1.8-31", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "4bb7e0c4f3557583e1e8d3c9ffb8ba5c" - }, - "mime": { - "Package": "mime", - "Version": "0.9", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "e87a35ec73b157552814869f45a63aa3" - }, - "modelr": { - "Package": "modelr", - "Version": "0.1.8", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "9fd59716311ee82cba83dc2826fc5577" - }, - "munsell": { - "Package": "munsell", - "Version": "0.5.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "6dfe8bf774944bd5595785e3229d8771" - }, - "nlme": { - "Package": "nlme", - "Version": "3.1-142", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "557d78d7eac2c1090ee58647a6274142" - }, - "openssl": { - "Package": "openssl", - "Version": "1.4.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "b3209c62052922b6c629544d94c8fa8a" - }, - "pillar": { - "Package": "pillar", - "Version": "1.4.6", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "bdf26e55ccb7df3e49a490150277f002" - }, - "pkgbuild": { - "Package": "pkgbuild", - "Version": "1.1.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "404684bc4e3685007f9720adf13b06c1" - }, - "pkgconfig": { - "Package": "pkgconfig", - "Version": "2.0.3", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "01f28d4278f15c76cddbea05899c5d6f" - }, - "pkgload": { - "Package": "pkgload", - "Version": "1.1.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "b6b150cd4709e0c0c9b5d51ac4376282" - }, - "praise": { - "Package": "praise", - "Version": "1.0.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "a555924add98c99d2f411e37e7d25e9f" - }, - "prettyunits": { - "Package": "prettyunits", - "Version": "1.1.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "95ef9167b75dde9d2ccc3c7528393e7e" - }, - "processx": { - "Package": "processx", - "Version": "3.4.3", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "f4f13345fcb00c51ace12f65dd18749f" - }, - "progress": { - "Package": "progress", - "Version": "1.2.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "14dc9f7a3c91ebb14ec5bb9208a07061" - }, - "ps": { - "Package": "ps", - "Version": "1.3.4", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "a54a7dfd68124abb2225dbfa9a85c457" - }, - "purrr": { - "Package": "purrr", - "Version": "0.3.4", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "97def703420c8ab10d8f0e6c72101e02" - }, - "readr": { - "Package": "readr", - "Version": "1.3.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "af8ab99cd936773a148963905736907b" - }, - "readxl": { - "Package": "readxl", - "Version": "1.3.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "63537c483c2dbec8d9e3183b3735254a" - }, - "rematch": { - "Package": "rematch", - "Version": "1.0.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "c66b930d20bb6d858cd18e1cebcfae5c" - }, - "rematch2": { - "Package": "rematch2", - "Version": "2.1.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "76c9e04c712a05848ae7a23d2f170a40" - }, - "renv": { - "Package": "renv", - "Version": "0.12.0-3", - "Source": "GitHub", - "RemoteType": "github", - "RemoteHost": "api.github.com", - "RemoteRepo": "renv", - "RemoteUsername": "rstudio", - "RemoteRef": "master", - "RemoteSha": "2a14b518d199f569477655c600650347b0d1f12a", - "Hash": "dff04ad9ffc13110c43a20ba0c80081b" - }, - "reprex": { - "Package": "reprex", - "Version": "0.3.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "b06bfb3504cc8a4579fd5567646f745b" - }, - "rlang": { - "Package": "rlang", - "Version": "0.4.7", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "c06d2a6887f4b414f8e927afd9ee976a" - }, - "rmarkdown": { - "Package": "rmarkdown", - "Version": "2.3", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "202260e1b2c410edc086d5b8f1ed946e" - }, - "rprojroot": { - "Package": "rprojroot", - "Version": "1.3-2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae" - }, - "rstudioapi": { - "Package": "rstudioapi", - "Version": "0.11", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "33a5b27a03da82ac4b1d43268f80088a" - }, - "rvest": { - "Package": "rvest", - "Version": "0.3.6", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "a9795ccb2d608330e841998b67156764" - }, - "scales": { - "Package": "scales", - "Version": "1.1.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "6f76f71042411426ec8df6c54f34e6dd" - }, - "selectr": { - "Package": "selectr", - "Version": "0.4-2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "3838071b66e0c566d55cc26bd6e27bf4" - }, - "snakecase": { - "Package": "snakecase", - "Version": "0.11.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "4079070fc210c7901c0832a3aeab894f" - }, - "stringi": { - "Package": "stringi", - "Version": "1.4.6", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "e99d8d656980d2dd416a962ae55aec90" - }, - "stringr": { - "Package": "stringr", - "Version": "1.4.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "0759e6b6c0957edb1311028a49a35e76" - }, - "sys": { - "Package": "sys", - "Version": "3.4", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "b227d13e29222b4574486cfcbde077fa" - }, - "testthat": { - "Package": "testthat", - "Version": "2.3.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "0829b987b8961fb07f3b1b64a2fbc495" - }, - "tibble": { - "Package": "tibble", - "Version": "3.0.3", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "08bd36bd34b20d4f7971d49e81deaab0" - }, - "tidyr": { - "Package": "tidyr", - "Version": "1.1.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "c40b2d5824d829190f4b825f4496dfae" - }, - "tidyselect": { - "Package": "tidyselect", - "Version": "1.1.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "6ea435c354e8448819627cf686f66e0a" - }, - "tidyverse": { - "Package": "tidyverse", - "Version": "1.3.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "bd51be662f359fa99021f3d51e911490" - }, - "tinytex": { - "Package": "tinytex", - "Version": "0.25", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "a4b9662282097d1033c60420dcb83350" - }, - "utf8": { - "Package": "utf8", - "Version": "1.1.4", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "4a5081acfb7b81a572e4384a7aaf2af1" - }, - "vctrs": { - "Package": "vctrs", - "Version": "0.3.4", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "0bc90078aeee42f2520b1d0a33bd6758" - }, - "viridisLite": { - "Package": "viridisLite", - "Version": "0.3.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "ce4f6271baa94776db692f1cb2055bee" - }, - "waldo": { - "Package": "waldo", - "Version": "0.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "3ed85dea874d2932c3a51531eae957b2" - }, - "whisker": { - "Package": "whisker", - "Version": "0.4", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "ca970b96d894e90397ed20637a0c1bbe" - }, - "withr": { - "Package": "withr", - "Version": "2.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "ecd17882a0b4419545691e095b74ee89" - }, - "xfun": { - "Package": "xfun", - "Version": "0.16", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "b4106139b90981a8bfea9c10bab0baf1" - }, - "xml2": { - "Package": "xml2", - "Version": "1.3.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "d4d71a75dd3ea9eb5fa28cc21f9585e2" - }, - "yaml": { - "Package": "yaml", - "Version": "2.2.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "2826c5d9efb0a88f657c7a679c7106db" - } - } -} diff --git a/testing.Rmd b/testing.Rmd deleted file mode 100644 index 38582f0..0000000 --- a/testing.Rmd +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: "R Notebook" -output: html_notebook ---- - -```{r setup} -library(tidyverse) -library(discord) -library(tictoc) -``` - -```{r generate simulation data} - -# this function allows you to generate any paired data for any level of relatedness. -# r_all is the relatedness coefficient. -# Default is MZ twin vs DZ twin. -# -# in this, y1_1 is one variable for sibling one, y1_2 is one variable for sibling 2. -# y2_1 is one variable for sibling one, and y2_2 is one variable for sibling 2. - -SIMDATA <- discord:::kinsim_multi(r_all = 1, - npg_all = 1200) %>% - tibble() %>% - relocate(c(id, r), .before = A1_1) - -``` - -```{r test on Mason function} -set.seed(18) -MasonRegression_MZTwins <- discord:::discordDataUpdating(SIMDATA, outcome = "y1", predictors = "y2", id = "id", - sex = NULL, race = NULL, pair_identifiers = c("_1", "_2"), - demographics = "none") %>% -discord:::discord_regression(predictors = "y2", outcome = "y1") %>% broom::tidy() - -``` - -```{r examine results of Mason function} - -# if this works, we should see not see a significant difference score since the covariance of the ACE are -# 0 by default. If we wanted to specify cov_a = 1, cov_c = 1, and cov_e = 1, then we would find a significant -# difference score. The two variables would be very highly correlated. - -# cov_a is the covariance for a1 and a2 (variable 1 and variable 2's added variance) -- -# how much genetic component overlaps -# this translates into the genetic aspect of the correlation -# -# A and C are the familial covariance. We cook out the variance associated with A and C, and the only thing that should -# signal a significant difference score is the covariance of E. - -# if we want to be super confident, generate 200 datasets. Write a function to flag whether it's significant or not, and then -# count proportion. -MasonRegression_MZTwins - -``` - -```{r try my function} - -set.seed(18) -JTRegression_MZTwins <- discordRegressionUpdating(data = SIMDATA, - outcome = "y1", - predictors = "y2", - sex = NULL, - race = NULL, - pair_identifiers = c("_1", "_2"), - id = "id") - -``` - -```{r compare our functions} -waldo::compare(MasonRegression_MZTwins, JTRegression_MZTwins) -``` - -```{r define significants function} - -isSig <- function(df) { - - model <- discord_regression(data = df, - outcome = "y1", - predictors = "y2", - sex = NULL, - race = NULL, - pair_identifiers = c("_1", "_2"), - id = "id") - - if (model[3,]$p.value < 0.05) { - sig <- TRUE -} else { - sig <- FALSE -} - return(list(model, sig)) - -} - -``` - -```{r test many simulations} - - -testSignificants <- function(relatedness, nsims, cov_a, cov_c, cov_e) { - tic(glue::glue("generate {nsims} sims")) -simulations <- purrr::map(1:nsims, ~ discord:::kinsim_multi(r_all = relatedness, - npg_all = 1200, - cov_a = cov_a, - cov_c = cov_c, - cov_e = cov_e) %>% - tibble() %>% - relocate(c(id, r), .before = A1_1)) -toc() - -tic(glue::glue("run {nsims} models and get significants")) -set.seed(18) -significants <- purrr::map(simulations, ~ isSig(.x)) %>% - purrr::map(set_names, c("model", "significant_lgl")) -toc() - -significantDF <- map_df(significants, ~ base::list("signficant" = .x$significant_lgl)) - -significantDF %>% - count(signficant) -} - - -# expect significant - - -expand_grid(relatedness = c(1, 0.5, 0), - cov_a = c(1,0), - cov_c = c(1,0), - cov_e = c(1,0)) - -values <- data.frame(relatedness = c(rep(1, 4), rep(0.5,4), rep(0, 4)), - nsims = rep(20), - cov_a = rep(c(1, 0, 0, 0),3), - cov_c = rep(c(0, 1, 0, 0),3), - cov_e = rep(c(0, 0, 1, 0), 3) - ) - - - -TEST_OBJ <- purrr::pmap(values, testSignificants) - - -testSignificants(relatedness = values$relatedness[1], nsims = 40, cov_a = values$cov_a[1], cov_c = values$cov_c[1], cov_e = values$cov_e[1]) - - - - - -r0.5_200 <- testSignificants(relatedness = 0.5, nsims = 10, cov_a = 0, cov_c = 1, cov_e = 0) -r0_200 <- testSignificants(relatedness = 0, nsims = 10, cov_a = 0, cov_c = 0, cov_e = 1) - - -``` diff --git a/testing.nb.html b/testing.nb.html deleted file mode 100644 index 3838658..0000000 --- a/testing.nb.html +++ /dev/null @@ -1,2135 +0,0 @@ - - - - - - - - - - - - - -R Notebook - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - -
library(tidyverse)
-library(discord)
-library(tictoc)
- - - - - - -
```r
-
-# this function allows you to generate any paired data for any level of relatedness.
-# r_all is the relatedness coefficient.
-# Default is MZ twin vs DZ twin.
-#
-# in this, y1_1 is one variable for sibling one, y1_2 is one variable for sibling 2.
-# y2_1 is one variable for sibling one, and y2_2 is one variable for sibling 2.
-
-SIMDATA <- discord:::kinsim_multi(r_all = 1,
-                                  npg_all = 1200) %>% 
-  tibble() %>%
-  relocate(c(id, r), .before = A1_1)
-
-

-<!-- rnb-source-end -->
-
-<!-- rnb-chunk-end -->
-
-
-<!-- rnb-text-begin -->
-
-
-
-<!-- rnb-text-end -->
-
-
-<!-- rnb-chunk-begin -->
-
-
-<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuc2V0LnNlZWQoMTgpXG5NYXNvblJlZ3Jlc3Npb25fTVpUd2lucyA8LSBkaXNjb3JkOjo6ZGlzY29yZERhdGFVcGRhdGluZyhTSU1EQVRBLCBvdXRjb21lID0gXFx5MVxcLCBwcmVkaWN0b3JzID0gXFx5MlxcLCBpZCA9IFxcaWRcXCwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXggPSBOVUxMLCByYWNlID0gTlVMTCwgcGFpcl9pZGVudGlmaWVycyA9IGMoXFxfMVxcLCBcXF8yXFwpLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbW9ncmFwaGljcyA9IFxcbm9uZVxcKSAlPiVcbmRpc2NvcmQ6OjpkaXNjb3JkX3JlZ3Jlc3Npb24ocHJlZGljdG9ycyA9IFxceTJcXCwgb3V0Y29tZSA9IFxceTFcXCkgJT4lIGJyb29tOjp0aWR5KClcblxuYGBgXG5gYGAifQ== -->
-
-```r
-```r
-set.seed(18)
-MasonRegression_MZTwins <- discord:::discordDataUpdating(SIMDATA, outcome = \y1\, predictors = \y2\, id = \id\, 
-                              sex = NULL, race = NULL, pair_identifiers = c(\_1\, \_2\), 
-                              demographics = \none\) %>%
-discord:::discord_regression(predictors = \y2\, outcome = \y1\) %>% broom::tidy()
-
-

-<!-- rnb-source-end -->
-
-<!-- rnb-chunk-end -->
-
-
-<!-- rnb-text-begin -->
-
-
-
-<!-- rnb-text-end -->
-
-
-<!-- rnb-chunk-begin -->
-
-
-<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuXG4jIGlmIHRoaXMgd29ya3MsIHdlIHNob3VsZCBzZWUgbm90IHNlZSBhIHNpZ25pZmljYW50IGRpZmZlcmVuY2Ugc2NvcmUgc2luY2UgdGhlIGNvdmFyaWFuY2Ugb2YgdGhlIEFDRSBhcmVcbiMgMCBieSBkZWZhdWx0LiBJZiB3ZSB3YW50ZWQgdG8gc3BlY2lmeSBjb3ZfYSA9IDEsIGNvdl9jID0gMSwgYW5kIGNvdl9lID0gMSwgdGhlbiB3ZSB3b3VsZCBmaW5kIGEgc2lnbmlmaWNhbnRcbiMgZGlmZmVyZW5jZSBzY29yZS4gVGhlIHR3byB2YXJpYWJsZXMgd291bGQgYmUgdmVyeSBoaWdobHkgY29ycmVsYXRlZC5cblxuIyBjb3ZfYSBpcyB0aGUgY292YXJpYW5jZSBmb3IgYTEgYW5kIGEyICh2YXJpYWJsZSAxIGFuZCB2YXJpYWJsZSAyJ3MgYWRkZWQgdmFyaWFuY2UpIC0tIFxuIyBob3cgbXVjaCBnZW5ldGljIGNvbXBvbmVudCBvdmVybGFwc1xuIyB0aGlzIHRyYW5zbGF0ZXMgaW50byB0aGUgZ2VuZXRpYyBhc3BlY3Qgb2YgdGhlIGNvcnJlbGF0aW9uXG4jIFxuIyBBIGFuZCBDIGFyZSB0aGUgZmFtaWxpYWwgY292YXJpYW5jZS4gV2UgY29vayBvdXQgdGhlIHZhcmlhbmNlIGFzc29jaWF0ZWQgd2l0aCBBIGFuZCBDLCBhbmQgdGhlIG9ubHkgdGhpbmcgdGhhdCBzaG91bGRcbiMgc2lnbmFsIGEgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZSBzY29yZSBpcyB0aGUgY292YXJpYW5jZSBvZiBFLlxuXG4jIGlmIHdlIHdhbnQgdG8gYmUgc3VwZXIgY29uZmlkZW50LCBnZW5lcmF0ZSAyMDAgZGF0YXNldHMuIFdyaXRlIGEgZnVuY3Rpb24gdG8gZmxhZyB3aGV0aGVyIGl0J3Mgc2lnbmlmaWNhbnQgb3Igbm90LCBhbmQgdGhlbiBcbiMgY291bnQgcHJvcG9ydGlvbi5cbk1hc29uUmVncmVzc2lvbl9NWlR3aW5zXG5cbmBgYFxuYGBgIn0= -->
-
-```r
-```r
-
-# if this works, we should see not see a significant difference score since the covariance of the ACE are
-# 0 by default. If we wanted to specify cov_a = 1, cov_c = 1, and cov_e = 1, then we would find a significant
-# difference score. The two variables would be very highly correlated.
-
-# cov_a is the covariance for a1 and a2 (variable 1 and variable 2's added variance) -- 
-# how much genetic component overlaps
-# this translates into the genetic aspect of the correlation
-# 
-# A and C are the familial covariance. We cook out the variance associated with A and C, and the only thing that should
-# signal a significant difference score is the covariance of E.
-
-# if we want to be super confident, generate 200 datasets. Write a function to flag whether it's significant or not, and then 
-# count proportion.
-MasonRegression_MZTwins
-
-

-<!-- rnb-source-end -->
-
-<!-- rnb-chunk-end -->
-
-
-<!-- rnb-text-begin -->
-
-
-
-<!-- rnb-text-end -->
-
-
-<!-- rnb-chunk-begin -->
-
-
-<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuXG5zZXQuc2VlZCgxOClcbkpUUmVncmVzc2lvbl9NWlR3aW5zIDwtIGRpc2NvcmRSZWdyZXNzaW9uVXBkYXRpbmcoZGF0YSA9IFNJTURBVEEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dGNvbWUgPSBcXHkxXFwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY3RvcnMgPSBcXHkyXFwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNleCA9IE5VTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhY2UgPSBOVUxMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYWlyX2lkZW50aWZpZXJzID0gYyhcXF8xXFwsIFxcXzJcXCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gXFxpZFxcKVxuXG5gYGBcbmBgYCJ9 -->
-
-```r
-```r
-
-set.seed(18)
-JTRegression_MZTwins <- discordRegressionUpdating(data = SIMDATA,
-                          outcome = \y1\,
-                          predictors = \y2\,
-                          sex = NULL,
-                          race = NULL,
-                          pair_identifiers = c(\_1\, \_2\),
-                          id = \id\)
-
-

-<!-- rnb-source-end -->
-
-<!-- rnb-chunk-end -->
-
-
-<!-- rnb-text-begin -->
-
-
-
-<!-- rnb-text-end -->
-
-
-<!-- rnb-chunk-begin -->
-
-
-<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxud2FsZG86OmNvbXBhcmUoTWFzb25SZWdyZXNzaW9uX01aVHdpbnMsIEpUUmVncmVzc2lvbl9NWlR3aW5zKVxuYGBgXG5gYGAifQ== -->
-
-```r
-```r
-waldo::compare(MasonRegression_MZTwins, JTRegression_MZTwins)
-

-<!-- rnb-source-end -->
-
-<!-- rnb-chunk-end -->
-
-
-<!-- rnb-text-begin -->
-
-
-
-<!-- rnb-text-end -->
-
-
-<!-- rnb-chunk-begin -->
-
-
-<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuXG5pc1NpZyA8LSBmdW5jdGlvbihkZikge1xuICBcbiAgbW9kZWwgPC0gZGlzY29yZF9yZWdyZXNzaW9uKGRhdGEgPSBkZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0Y29tZSA9IFxceTFcXCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljdG9ycyA9IFxceTJcXCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V4ID0gTlVMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmFjZSA9IE5VTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhaXJfaWRlbnRpZmllcnMgPSBjKFxcXzFcXCwgXFxfMlxcKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBcXGlkXFwpXG4gIFxuICBpZiAobW9kZWxbMyxdJHAudmFsdWUgPCAwLjA1KSB7XG4gIHNpZyA8LSBUUlVFXG59IGVsc2Uge1xuICBzaWcgPC0gRkFMU0Vcbn1cbiAgcmV0dXJuKGxpc3QobW9kZWwsIHNpZykpXG4gIFxufVxuXG5gYGBcbmBgYCJ9 -->
-
-```r
-```r
-
-isSig <- function(df) {
-  
-  model <- discord_regression(data = df,
-                          outcome = \y1\,
-                          predictors = \y2\,
-                          sex = NULL,
-                          race = NULL,
-                          pair_identifiers = c(\_1\, \_2\),
-                          id = \id\)
-  
-  if (model[3,]$p.value < 0.05) {
-  sig <- TRUE
-} else {
-  sig <- FALSE
-}
-  return(list(model, sig))
-  
-}
-
-

-<!-- rnb-source-end -->
-
-<!-- rnb-chunk-end -->
-
-
-<!-- rnb-text-begin -->
-
-
-
-<!-- rnb-text-end -->
-
-
-<!-- rnb-chunk-begin -->
-
-
-<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuXG5cbnRlc3RTaWduaWZpY2FudHMgPC0gZnVuY3Rpb24ocmVsYXRlZG5lc3MsIG5zaW1zLCBjb3ZfYSwgY292X2MsIGNvdl9lKSB7XG4gIHRpYyhnbHVlOjpnbHVlKFxcZ2VuZXJhdGUge25zaW1zfSBzaW1zXFwpKVxuc2ltdWxhdGlvbnMgPC0gcHVycnI6Om1hcCgxOm5zaW1zLCB+IGRpc2NvcmQ6OjpraW5zaW1fbXVsdGkocl9hbGwgPSByZWxhdGVkbmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucGdfYWxsID0gMTIwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3ZfYSA9IGNvdl9hLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdl9jID0gY292X2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY292X2UgPSBjb3ZfZSkgJT4lIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpYmJsZSgpICU+JVxuICByZWxvY2F0ZShjKGlkLCByKSwgLmJlZm9yZSA9IEExXzEpKVxudG9jKClcblxudGljKGdsdWU6OmdsdWUoXFxydW4ge25zaW1zfSBtb2RlbHMgYW5kIGdldCBzaWduaWZpY2FudHNcXCkpXG5zZXQuc2VlZCgxOClcbnNpZ25pZmljYW50cyA8LSBwdXJycjo6bWFwKHNpbXVsYXRpb25zLCB+IGlzU2lnKC54KSkgJT4lXG4gIHB1cnJyOjptYXAoc2V0X25hbWVzLCBjKFxcbW9kZWxcXCwgXFxzaWduaWZpY2FudF9sZ2xcXCkpXG50b2MoKVxuXG5zaWduaWZpY2FudERGIDwtIG1hcF9kZihzaWduaWZpY2FudHMsIH4gYmFzZTo6bGlzdChcXHNpZ25maWNhbnRcXCA9IC54JHNpZ25pZmljYW50X2xnbCkpXG5cbnNpZ25pZmljYW50REYgJT4lIFxuICBjb3VudChzaWduZmljYW50KVxufVxuXG5cbiMgZXhwZWN0IHNpZ25pZmljYW50XG5cblxuZXhwYW5kX2dyaWQocmVsYXRlZG5lc3MgPSBjKDEsIDAuNSwgMCksXG4gICAgICAgICAgICBjb3ZfYSA9IGMoMSwwKSxcbiAgICAgICAgICAgIGNvdl9jID0gYygxLDApLFxuICAgICAgICAgICAgY292X2UgPSBjKDEsMCkpXG5cbnZhbHVlcyA8LSBkYXRhLmZyYW1lKHJlbGF0ZWRuZXNzID0gYyhyZXAoMSwgNCksIHJlcCgwLjUsNCksIHJlcCgwLCA0KSksXG4gICAgICAgICAgICAgICAgICAgICBuc2ltcyA9IHJlcCgyMCksXG4gIGNvdl9hID0gcmVwKGMoMSwgMCwgMCwgMCksMyksXG4gIGNvdl9jID0gcmVwKGMoMCwgMSwgMCwgMCksMyksXG4gIGNvdl9lID0gcmVwKGMoMCwgMCwgMSwgMCksIDMpXG4gIClcblxuXG5cblRFU1RfT0JKIDwtIHB1cnJyOjpwbWFwKHZhbHVlcywgdGVzdFNpZ25pZmljYW50cylcblxuXG50ZXN0U2lnbmlmaWNhbnRzKHJlbGF0ZWRuZXNzID0gdmFsdWVzJHJlbGF0ZWRuZXNzWzFdLCBuc2ltcyA9IDQwLCBjb3ZfYSA9IHZhbHVlcyRjb3ZfYVsxXSwgY292X2MgPSB2YWx1ZXMkY292X2NbMV0sIGNvdl9lID0gdmFsdWVzJGNvdl9lWzFdKVxuXG5cblxuXG5cbnIwLjVfMjAwIDwtIHRlc3RTaWduaWZpY2FudHMocmVsYXRlZG5lc3MgPSAwLjUsIG5zaW1zID0gMTAsIGNvdl9hID0gMCwgY292X2MgPSAxLCBjb3ZfZSA9IDApXG5yMF8yMDAgPC0gdGVzdFNpZ25pZmljYW50cyhyZWxhdGVkbmVzcyA9IDAsIG5zaW1zID0gMTAsIGNvdl9hID0gMCwgY292X2MgPSAwLCBjb3ZfZSA9IDEpXG5cblxuYGBgXG5gYGAifQ== -->
-
-```r
-```r
-
-
-testSignificants <- function(relatedness, nsims, cov_a, cov_c, cov_e) {
-  tic(glue::glue(\generate {nsims} sims\))
-simulations <- purrr::map(1:nsims, ~ discord:::kinsim_multi(r_all = relatedness,
-                                  npg_all = 1200,
-                                  cov_a = cov_a,
-                                  cov_c = cov_c,
-                                  cov_e = cov_e) %>% 
-                            tibble() %>%
-  relocate(c(id, r), .before = A1_1))
-toc()
-
-tic(glue::glue(\run {nsims} models and get significants\))
-set.seed(18)
-significants <- purrr::map(simulations, ~ isSig(.x)) %>%
-  purrr::map(set_names, c(\model\, \significant_lgl\))
-toc()
-
-significantDF <- map_df(significants, ~ base::list(\signficant\ = .x$significant_lgl))
-
-significantDF %>% 
-  count(signficant)
-}
-
-
-# expect significant
-
-
-expand_grid(relatedness = c(1, 0.5, 0),
-            cov_a = c(1,0),
-            cov_c = c(1,0),
-            cov_e = c(1,0))
-
-values <- data.frame(relatedness = c(rep(1, 4), rep(0.5,4), rep(0, 4)),
-                     nsims = rep(20),
-  cov_a = rep(c(1, 0, 0, 0),3),
-  cov_c = rep(c(0, 1, 0, 0),3),
-  cov_e = rep(c(0, 0, 1, 0), 3)
-  )
-
-
-
-TEST_OBJ <- purrr::pmap(values, testSignificants)
-
-
-testSignificants(relatedness = values$relatedness[1], nsims = 40, cov_a = values$cov_a[1], cov_c = values$cov_c[1], cov_e = values$cov_e[1])
-
-
-
-
-
-r0.5_200 <- testSignificants(relatedness = 0.5, nsims = 10, cov_a = 0, cov_c = 1, cov_e = 0)
-r0_200 <- testSignificants(relatedness = 0, nsims = 10, cov_a = 0, cov_c = 0, cov_e = 1)
-
-

```

- - - -
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3Igc2V0dXB9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGRpc2NvcmQpCmxpYnJhcnkodGljdG9jKQpgYGAKCmBgYHtyIGdlbmVyYXRlIHNpbXVsYXRpb24gZGF0YX0KCiMgdGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIGdlbmVyYXRlIGFueSBwYWlyZWQgZGF0YSBmb3IgYW55IGxldmVsIG9mIHJlbGF0ZWRuZXNzLgojIHJfYWxsIGlzIHRoZSByZWxhdGVkbmVzcyBjb2VmZmljaWVudC4KIyBEZWZhdWx0IGlzIE1aIHR3aW4gdnMgRFogdHdpbi4KIwojIGluIHRoaXMsIHkxXzEgaXMgb25lIHZhcmlhYmxlIGZvciBzaWJsaW5nIG9uZSwgeTFfMiBpcyBvbmUgdmFyaWFibGUgZm9yIHNpYmxpbmcgMi4KIyB5Ml8xIGlzIG9uZSB2YXJpYWJsZSBmb3Igc2libGluZyBvbmUsIGFuZCB5Ml8yIGlzIG9uZSB2YXJpYWJsZSBmb3Igc2libGluZyAyLgoKU0lNREFUQSA8LSBkaXNjb3JkOjo6a2luc2ltX211bHRpKHJfYWxsID0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5wZ19hbGwgPSAxMjAwKSAlPiUgCiAgdGliYmxlKCkgJT4lCiAgcmVsb2NhdGUoYyhpZCwgciksIC5iZWZvcmUgPSBBMV8xKQoKYGBgCgpgYGB7ciB0ZXN0IG9uIE1hc29uIGZ1bmN0aW9ufQpzZXQuc2VlZCgxOCkKTWFzb25SZWdyZXNzaW9uX01aVHdpbnMgPC0gZGlzY29yZDo6OmRpc2NvcmREYXRhVXBkYXRpbmcoU0lNREFUQSwgb3V0Y29tZSA9ICJ5MSIsIHByZWRpY3RvcnMgPSAieTIiLCBpZCA9ICJpZCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXggPSBOVUxMLCByYWNlID0gTlVMTCwgcGFpcl9pZGVudGlmaWVycyA9IGMoIl8xIiwgIl8yIiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZW1vZ3JhcGhpY3MgPSAibm9uZSIpICU+JQpkaXNjb3JkOjo6ZGlzY29yZF9yZWdyZXNzaW9uKHByZWRpY3RvcnMgPSAieTIiLCBvdXRjb21lID0gInkxIikgJT4lIGJyb29tOjp0aWR5KCkKCmBgYAoKYGBge3IgZXhhbWluZSByZXN1bHRzIG9mIE1hc29uIGZ1bmN0aW9ufQoKIyBpZiB0aGlzIHdvcmtzLCB3ZSBzaG91bGQgc2VlIG5vdCBzZWUgYSBzaWduaWZpY2FudCBkaWZmZXJlbmNlIHNjb3JlIHNpbmNlIHRoZSBjb3ZhcmlhbmNlIG9mIHRoZSBBQ0UgYXJlCiMgMCBieSBkZWZhdWx0LiBJZiB3ZSB3YW50ZWQgdG8gc3BlY2lmeSBjb3ZfYSA9IDEsIGNvdl9jID0gMSwgYW5kIGNvdl9lID0gMSwgdGhlbiB3ZSB3b3VsZCBmaW5kIGEgc2lnbmlmaWNhbnQKIyBkaWZmZXJlbmNlIHNjb3JlLiBUaGUgdHdvIHZhcmlhYmxlcyB3b3VsZCBiZSB2ZXJ5IGhpZ2hseSBjb3JyZWxhdGVkLgoKIyBjb3ZfYSBpcyB0aGUgY292YXJpYW5jZSBmb3IgYTEgYW5kIGEyICh2YXJpYWJsZSAxIGFuZCB2YXJpYWJsZSAyJ3MgYWRkZWQgdmFyaWFuY2UpIC0tIAojIGhvdyBtdWNoIGdlbmV0aWMgY29tcG9uZW50IG92ZXJsYXBzCiMgdGhpcyB0cmFuc2xhdGVzIGludG8gdGhlIGdlbmV0aWMgYXNwZWN0IG9mIHRoZSBjb3JyZWxhdGlvbgojIAojIEEgYW5kIEMgYXJlIHRoZSBmYW1pbGlhbCBjb3ZhcmlhbmNlLiBXZSBjb29rIG91dCB0aGUgdmFyaWFuY2UgYXNzb2NpYXRlZCB3aXRoIEEgYW5kIEMsIGFuZCB0aGUgb25seSB0aGluZyB0aGF0IHNob3VsZAojIHNpZ25hbCBhIHNpZ25pZmljYW50IGRpZmZlcmVuY2Ugc2NvcmUgaXMgdGhlIGNvdmFyaWFuY2Ugb2YgRS4KCiMgaWYgd2Ugd2FudCB0byBiZSBzdXBlciBjb25maWRlbnQsIGdlbmVyYXRlIDIwMCBkYXRhc2V0cy4gV3JpdGUgYSBmdW5jdGlvbiB0byBmbGFnIHdoZXRoZXIgaXQncyBzaWduaWZpY2FudCBvciBub3QsIGFuZCB0aGVuIAojIGNvdW50IHByb3BvcnRpb24uCk1hc29uUmVncmVzc2lvbl9NWlR3aW5zCgpgYGAKCmBgYHtyIHRyeSBteSBmdW5jdGlvbn0KCnNldC5zZWVkKDE4KQpKVFJlZ3Jlc3Npb25fTVpUd2lucyA8LSBkaXNjb3JkUmVncmVzc2lvblVwZGF0aW5nKGRhdGEgPSBTSU1EQVRBLAogICAgICAgICAgICAgICAgICAgICAgICAgIG91dGNvbWUgPSAieTEiLAogICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY3RvcnMgPSAieTIiLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNleCA9IE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmFjZSA9IE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFpcl9pZGVudGlmaWVycyA9IGMoIl8xIiwgIl8yIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSAiaWQiKQoKYGBgCgpgYGB7ciBjb21wYXJlIG91ciBmdW5jdGlvbnN9CndhbGRvOjpjb21wYXJlKE1hc29uUmVncmVzc2lvbl9NWlR3aW5zLCBKVFJlZ3Jlc3Npb25fTVpUd2lucykKYGBgCgpgYGB7ciBkZWZpbmUgc2lnbmlmaWNhbnRzIGZ1bmN0aW9ufQoKaXNTaWcgPC0gZnVuY3Rpb24oZGYpIHsKICAKICBtb2RlbCA8LSBkaXNjb3JkX3JlZ3Jlc3Npb24oZGF0YSA9IGRmLAogICAgICAgICAgICAgICAgICAgICAgICAgIG91dGNvbWUgPSAieTEiLAogICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY3RvcnMgPSAieTIiLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNleCA9IE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmFjZSA9IE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFpcl9pZGVudGlmaWVycyA9IGMoIl8xIiwgIl8yIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSAiaWQiKQogIAogIGlmIChtb2RlbFszLF0kcC52YWx1ZSA8IDAuMDUpIHsKICBzaWcgPC0gVFJVRQp9IGVsc2UgewogIHNpZyA8LSBGQUxTRQp9CiAgcmV0dXJuKGxpc3QobW9kZWwsIHNpZykpCiAgCn0KCmBgYAoKYGBge3IgdGVzdCBtYW55IHNpbXVsYXRpb25zfQoKCnRlc3RTaWduaWZpY2FudHMgPC0gZnVuY3Rpb24ocmVsYXRlZG5lc3MsIG5zaW1zLCBjb3ZfYSwgY292X2MsIGNvdl9lKSB7CiAgdGljKGdsdWU6OmdsdWUoImdlbmVyYXRlIHtuc2ltc30gc2ltcyIpKQpzaW11bGF0aW9ucyA8LSBwdXJycjo6bWFwKDE6bnNpbXMsIH4gZGlzY29yZDo6OmtpbnNpbV9tdWx0aShyX2FsbCA9IHJlbGF0ZWRuZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnBnX2FsbCA9IDEyMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3ZfYSA9IGNvdl9hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY292X2MgPSBjb3ZfYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdl9lID0gY292X2UpICU+JSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpYmJsZSgpICU+JQogIHJlbG9jYXRlKGMoaWQsIHIpLCAuYmVmb3JlID0gQTFfMSkpCnRvYygpCgp0aWMoZ2x1ZTo6Z2x1ZSgicnVuIHtuc2ltc30gbW9kZWxzIGFuZCBnZXQgc2lnbmlmaWNhbnRzIikpCnNldC5zZWVkKDE4KQpzaWduaWZpY2FudHMgPC0gcHVycnI6Om1hcChzaW11bGF0aW9ucywgfiBpc1NpZygueCkpICU+JQogIHB1cnJyOjptYXAoc2V0X25hbWVzLCBjKCJtb2RlbCIsICJzaWduaWZpY2FudF9sZ2wiKSkKdG9jKCkKCnNpZ25pZmljYW50REYgPC0gbWFwX2RmKHNpZ25pZmljYW50cywgfiBiYXNlOjpsaXN0KCJzaWduZmljYW50IiA9IC54JHNpZ25pZmljYW50X2xnbCkpCgpzaWduaWZpY2FudERGICU+JSAKICBjb3VudChzaWduZmljYW50KQp9CgoKIyBleHBlY3Qgc2lnbmlmaWNhbnQKCgpleHBhbmRfZ3JpZChyZWxhdGVkbmVzcyA9IGMoMSwgMC41LCAwKSwKICAgICAgICAgICAgY292X2EgPSBjKDEsMCksCiAgICAgICAgICAgIGNvdl9jID0gYygxLDApLAogICAgICAgICAgICBjb3ZfZSA9IGMoMSwwKSkKCnZhbHVlcyA8LSBkYXRhLmZyYW1lKHJlbGF0ZWRuZXNzID0gYyhyZXAoMSwgNCksIHJlcCgwLjUsNCksIHJlcCgwLCA0KSksCiAgICAgICAgICAgICAgICAgICAgIG5zaW1zID0gcmVwKDIwKSwKICBjb3ZfYSA9IHJlcChjKDEsIDAsIDAsIDApLDMpLAogIGNvdl9jID0gcmVwKGMoMCwgMSwgMCwgMCksMyksCiAgY292X2UgPSByZXAoYygwLCAwLCAxLCAwKSwgMykKICApCgoKClRFU1RfT0JKIDwtIHB1cnJyOjpwbWFwKHZhbHVlcywgdGVzdFNpZ25pZmljYW50cykKCgp0ZXN0U2lnbmlmaWNhbnRzKHJlbGF0ZWRuZXNzID0gdmFsdWVzJHJlbGF0ZWRuZXNzWzFdLCBuc2ltcyA9IDQwLCBjb3ZfYSA9IHZhbHVlcyRjb3ZfYVsxXSwgY292X2MgPSB2YWx1ZXMkY292X2NbMV0sIGNvdl9lID0gdmFsdWVzJGNvdl9lWzFdKQoKCgoKCnIwLjVfMjAwIDwtIHRlc3RTaWduaWZpY2FudHMocmVsYXRlZG5lc3MgPSAwLjUsIG5zaW1zID0gMTAsIGNvdl9hID0gMCwgY292X2MgPSAxLCBjb3ZfZSA9IDApCnIwXzIwMCA8LSB0ZXN0U2lnbmlmaWNhbnRzKHJlbGF0ZWRuZXNzID0gMCwgbnNpbXMgPSAxMCwgY292X2EgPSAwLCBjb3ZfYyA9IDAsIGNvdl9lID0gMSkKCgpgYGAK
- - - -
- - - - - - - - - - - - - - - - From 751ae58f7fb92241cd702ac8bd616ebcde673019 Mon Sep 17 00:00:00 2001 From: Mason Garrison Date: Fri, 7 May 2021 09:28:05 -0400 Subject: [PATCH 2/4] tweaks --- DESCRIPTION | 4 +- R/func_discord_regression_alt.R | 2 +- {R => hidden}/func_discord_data_alt.R | 0 hidden/func_discord_regression_alt.R | 89 +++++++++++++++++++++++++ {R => hidden}/func_kinsim_alt.R | 0 {R => hidden}/helpers_regression_alt.R | 0 {R => hidden}/helpers_simulation_alt.R | 0 {R => hidden}/sysdata.rda | Bin {R => hidden}/utils-pipe.R | 0 9 files changed, 92 insertions(+), 3 deletions(-) rename {R => hidden}/func_discord_data_alt.R (100%) create mode 100644 hidden/func_discord_regression_alt.R rename {R => hidden}/func_kinsim_alt.R (100%) rename {R => hidden}/helpers_regression_alt.R (100%) rename {R => hidden}/helpers_simulation_alt.R (100%) rename {R => hidden}/sysdata.rda (100%) rename {R => hidden}/utils-pipe.R (100%) diff --git a/DESCRIPTION b/DESCRIPTION index 9d6cc98..86f71cc 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Package: discord Type: Package Title: Functions for Discordant Kinship Modeling -Version: 1.0.1 -Date: 2021-03-19 +Version: 2.0.0 +Date: 2021-05-15 Authors@R: c(person("S. Mason", "Garrison", email = "garrissm@wfu.edu", role = c("aut", "cre")), person("Jonathan", "Trattner", email = "code@jdtrat.com", diff --git a/R/func_discord_regression_alt.R b/R/func_discord_regression_alt.R index 4ce0556..e424a0d 100644 --- a/R/func_discord_regression_alt.R +++ b/R/func_discord_regression_alt.R @@ -34,7 +34,7 @@ #' race = NULL, #' abridged_output = FALSE) #' -discord_regression <- function(data, outcome, predictors, id = "extended_id", sex = "sex", race = "race", pair_identifiers = c("_s1", "_s2"), abridged_output = TRUE) { +discord_regression <- function(data, outcome, predictors, id = "extended_id", sex = "sex", race = "race", pair_identifiers = c("_s1", "_s2"), abridged_output = FALSE) { check_discord_errors(data = data, id = id, sex = sex, race = race, pair_identifiers = pair_identifiers) diff --git a/R/func_discord_data_alt.R b/hidden/func_discord_data_alt.R similarity index 100% rename from R/func_discord_data_alt.R rename to hidden/func_discord_data_alt.R diff --git a/hidden/func_discord_regression_alt.R b/hidden/func_discord_regression_alt.R new file mode 100644 index 0000000..4ce0556 --- /dev/null +++ b/hidden/func_discord_regression_alt.R @@ -0,0 +1,89 @@ +#' Perform a Linear Regression within the Discordant Kinship Framework +#' +#' @param data A data frame. +#' @param outcome A character string containing the outcome variable of +#' interest. +#' @param predictors A character vector containing the column names for +#' predicting the outcome. +#' @param id A unique kinship pair identifier. +#' @param sex A character string for the sex column name. +#' @param race A character string for the race column name. +#' @param pair_identifiers A character vector of length two that contains the variable identifier for each kinship pair. +#' @param abridged_output Logical: TRUE (by default) and the fit model will be summarized with the \link[broom]{tidy} function. FALSE and the full model object will be returned. +#' +#' @return Either a tidy data frame containing the model metrics or the full model object will be returned. See examples. +#' +#' @export +#' +#' @examples +#' +#' # Return an abridged model output using the \link[broom]{package}. +#' discord_regression(data = sample_data, +#' outcome = "height", +#' predictors = "weight", +#' pair_identifiers = c("_s1", "_s2"), +#' sex = NULL, +#' race = NULL) +#' +#' # Return the full model output. +#' discord_regression(data = sample_data, +#' outcome = "height", +#' predictors = "weight", +#' pair_identifiers = c("_s1", "_s2"), +#' sex = NULL, +#' race = NULL, +#' abridged_output = FALSE) +#' +discord_regression <- function(data, outcome, predictors, id = "extended_id", sex = "sex", race = "race", pair_identifiers = c("_s1", "_s2"), abridged_output = TRUE) { + + check_discord_errors(data = data, id = id, sex = sex, race = race, pair_identifiers = pair_identifiers) + + if (is.null(sex) & is.null(race)) { + demographics <- "none" + } else if (is.null(sex) & !is.null(race)) { + demographics <- "race" + } else if (!is.null(sex) & is.null(race)) { + demographics <- "sex" + } else if (!is.null(sex) & !is.null(race)) { + demographics <- "both" + } + + preppedData <- discord_data(data = data, + outcome = outcome, + predictors = predictors, + id = id, + sex = sex, + race = race, + pair_identifiers = pair_identifiers, + demographics = demographics) + + # Run the discord regression + realOutcome <- base::paste0(outcome, "_diff") + predOutcome <- base::paste0(outcome, "_mean") + pred_diff <- base::paste0(predictors, "_diff", collapse = " + ") + pred_mean <- base::paste0(predictors, "_mean", collapse = " + ") + + + if (demographics == "none") { + preds <- base::paste0(predOutcome, " + ", pred_diff, " + ", pred_mean) + } else if (demographics == "race") { + demographic_controls <- base::paste0(race, "_s1") + preds <- base::paste0(predOutcome, " + ", pred_diff, " + ", pred_mean, " + ", demographic_controls) + } else if (demographics == "sex") { + demographic_controls <- base::paste0(sex, "_s1 + ", sex, "_s2") + preds <- base::paste0(predOutcome, " + ", pred_diff, " + ", pred_mean, " + ", demographic_controls) + } else if (demographics == "both") { + demographic_controls <- base::paste0(sex, "_s1 + ", race, "_s1 + ", sex, "_s2") + preds <- base::paste0(predOutcome, " + ", pred_diff, " + ", pred_mean, " + ", demographic_controls) + } + + model <- stats::lm(stats::as.formula(paste(realOutcome, preds, sep = " ~ ")), data = preppedData) + + if (abridged_output) { + model <- model %>% + broom::tidy() + } + + return(model) + +} diff --git a/R/func_kinsim_alt.R b/hidden/func_kinsim_alt.R similarity index 100% rename from R/func_kinsim_alt.R rename to hidden/func_kinsim_alt.R diff --git a/R/helpers_regression_alt.R b/hidden/helpers_regression_alt.R similarity index 100% rename from R/helpers_regression_alt.R rename to hidden/helpers_regression_alt.R diff --git a/R/helpers_simulation_alt.R b/hidden/helpers_simulation_alt.R similarity index 100% rename from R/helpers_simulation_alt.R rename to hidden/helpers_simulation_alt.R diff --git a/R/sysdata.rda b/hidden/sysdata.rda similarity index 100% rename from R/sysdata.rda rename to hidden/sysdata.rda diff --git a/R/utils-pipe.R b/hidden/utils-pipe.R similarity index 100% rename from R/utils-pipe.R rename to hidden/utils-pipe.R From c2c706f6b09ae0886da6e5a06e8f11a99d736732 Mon Sep 17 00:00:00 2001 From: Mason Garrison Date: Fri, 7 May 2021 09:47:51 -0400 Subject: [PATCH 3/4] updates --- R/func_discord_data.R | 184 ++++++++++++++++++ ...ession_alt.R => func_discord_regression.R} | 37 +++- 2 files changed, 218 insertions(+), 3 deletions(-) create mode 100644 R/func_discord_data.R rename R/{func_discord_regression_alt.R => func_discord_regression.R} (71%) diff --git a/R/func_discord_data.R b/R/func_discord_data.R new file mode 100644 index 0000000..a51644a --- /dev/null +++ b/R/func_discord_data.R @@ -0,0 +1,184 @@ +#' Restructure Data to Determine Kinship Differences +#' +#' @param data A data frame. +#' @param outcome A character string containing the outcome variable of +#' interest. +#' @param predictors A character vector containing the column names for +#' predicting the outcome. +#' @param id A unique kinship pair identifier. +#' @param sex A character string for the sex column name. +#' @param race A character string for the race column name. +#' @param pair_identifiers A character vector of length two that contains the variable identifier for each kinship p +#' @param demographics Indicator variable for if the data has the sex and race demographics. If both are present (default, and recommended), value should be "both". Other options include "sex", "race", or "none". +#' @param legacy Logical Logical: FALSE (by default) when true uses legacy code version +#' +#' @return A data frame that +#' +#' @export +#' +#' @examples +#' +#' discord_data(data = sample_data, +#' outcome = "height", +#' predictors = "weight", +#' pair_identifiers = c("_s1", "_s2"), +#' sex = NULL, +#' race = NULL, +#' demographics = "none") +#' +discord_data <- function(data, + outcome, + predictors, + id = "extended_id", + sex = "sex", + race = "race", + pair_identifiers= c("_s1", "_s2"), + demographics = "both", + legacy=FALSE, + ...) { +if(!legacy){ # non-legacy version + #combine outcome and predictors for manipulating the data + variables <- c(outcome, predictors) + + #order the data on outcome + orderedOnOutcome <- purrr::map_df(.x = 1:base::nrow(data), ~check_sibling_order(data = data, + outcome = outcome, + pair_identifiers = pair_identifiers, + row = .x)) + + out <- NULL + for (i in 1:base::length(variables)) { + out[[i]] <- purrr::map_df(.x = 1:base::nrow(orderedOnOutcome), ~make_mean_diffs(data = orderedOnOutcome, + id = id, + sex = sex, + race = race, + pair_identifiers = pair_identifiers, + demographics = demographics, + variables[i], row = .x)) + } + + + if (demographics == "none") { + output <- out %>% purrr::reduce(dplyr::left_join, by = c("id")) + } else if (demographics == "race") { + output <- out %>% purrr::reduce(dplyr::left_join, by = c("id", paste0(race, pair_identifiers[1]), paste0(race, pair_identifiers[2]))) + } else if (demographics == "sex") { + output <- out %>% purrr::reduce(dplyr::left_join, by = c("id", paste0(sex, pair_identifiers[1]), paste0(sex, pair_identifiers[2])))) + } else if (demographics == "both") { + output <- out %>% purrr::reduce(dplyr::left_join, by = c("id", paste0(sex, pair_identifiers[1]), paste0(sex, pair_identifiers[2])), paste0(race, pair_identifiers[1]), paste0(race, pair_identifiers[2])))) + } + }else{ + arguments <- as.list(match.call()) + y <- ysort <- NULL + + IVlist <- list() + outcome1=subset(df, select=paste0(arguments$outcome,sep,"1"))[,1] + outcome2=subset(df, select=paste0(arguments$outcome,sep,"2"))[,1] + + #create id if not supplied + if(is.null(id)) + { + id<-rep(1:length(outcome1[,1]))} + #If no predictors selected, grab all variables not listed as outcome, and contain sep 1 or sep 2 + if(is.null(predictors)){ + predictors<-setdiff(unique(gsub(paste0(sep,"1|",sep,"2"),"",grep(paste0(sep,"1|",sep,"2"),names(df),value = TRUE))),paste0(arguments$outcome)) + #unpaired.predictors=setdiff(grep(paste0(sep,"1|",sep,"2"),names(df),value = TRUE,invert=TRUE),paste0(arguments$id)) + } + + + if(!doubleentered){ + outcome2x<-outcome2 + outcome2<-c(outcome2[,1],outcome1[,1]) + outcome1<-c(outcome1[,1],outcome2x[,1]) + + if(scale&is.numeric(outcome1)){ + outcome1<-scale(outcome1) + outcome2<-scale(outcome2) + } + DV<-data.frame(outcome1,outcome2) + DV$outcome_diff<- DV$outcome1-DV$outcome2 + DV$outcome_mean<-(DV$outcome1+DV$outcome2)/2 + + remove(outcome1);remove(outcome2x);remove(outcome2) + + for(i in 1:length(predictors)){ + + predictor1x= predictor1=subset(df, select=paste0(predictors[i],sep,"1"))[,1] + predictor2=subset(df, select=paste0(predictors[i],sep,"2"))[,1] + predictor1<-c(predictor1[,1],predictor2[,1]) + predictor2<-c(predictor2[,1],predictor1x[,1]) + if(scale&is.numeric(predictor1)){ + predictor1<-scale(predictor1) + predictor2<-scale(predictor2) + } + remove(predictor1x) + IVi<-data.frame(predictor1,predictor2) + IVi$predictor_diff<-IVi$predictor1-IVi$predictor2 + IVi$predictor_mean<-(IVi$predictor1+IVi$predictor2)/2 + names(IVi)<-c(paste0(predictors[i],"_1"),paste0(predictors[i],"_2"),paste0(predictors[i],"_diff"),paste0(predictors[i],"_mean")) + IVlist[[i]] <- IVi + + names(IVlist)[i]<-paste0("") + } + }else{ + + if(scale&is.numeric(outcome1)) + + {outcome1<-scale(outcome1) + outcome2<-scale(outcome2) + } + DV<-data.frame(outcome1,outcome2) + + DV$outcome_diff<-DV$outcome1-DV$outcome2 + DV$outcome_mean<-(DV$outcome1+DV$outcome2)/2 + + remove(outcome1);remove(outcome2) + for(i in 1:length(predictors)){ + predictor1=subset(df, select=paste0(predictors[i],sep,"1"))[,1] + predictor2=subset(df, select=paste0(predictors[i],sep,"2"))[,1] + if(scale&is.numeric(predictor1)) + {predictor1<-scale(predictor1) + predictor2<-scale(predictor2) + } + IVi<-data.frame(predictor1,predictor2) + IVi$predictor_diff<-IVi$predictor1-IVi$predictor2 + IVi$predictor_mean<-(IVi$predictor1+IVi$predictor2)/2 + names(IVi)<-c(paste0(predictors[i],"_1"),paste0(predictors[i],"_2"),paste0(predictors[i],"_diff"),paste0(predictors[i],"_mean")) + IVlist[[i]] <- IVi + names(IVlist)[i]<-paste0("") + } + } + + + DV$id<-id + DV$ysort<-0 + DV$ysort[DV$outcome_diff>0&!is.na(DV$outcome_diff)]<-1 + + # randomly select for sorting on identical outcomes + + if(length(unique(DV$id[DV$outcome_diff==0]))>0){ + select<-sample(c(0,1), replace=TRUE, size=length(unique(DV$id[DV$outcome_diff==0&!is.na(DV$outcome_diff)]))) + DV$ysort[DV$outcome_diff==0&!is.na(DV$outcome_diff)]<-c(select,abs(select-1)) + + } + DV$id<-NULL + names(DV)<-c(paste0(arguments$outcome,"_1"),paste0(arguments$outcome,"_2"),paste0(arguments$outcome,"_diff"),paste0(arguments$outcome,"_mean"),"ysort") + + merged.data.frame =data.frame(id,DV,IVlist) + + id<-ysort<-NULL #appeases R CMD check + + merged.data.frame<-subset(merged.data.frame,ysort==1) + merged.data.frame$ysort<-NULL + merged.data.frame <- merged.data.frame[order(merged.data.frame$id),] + if(!full) + {varskeep<-c("id",paste0(arguments$outcome,"_diff"),paste0(arguments$outcome,"_mean"),paste0(predictors,"_diff"),paste0(predictors,"_mean")) + + merged.data.frame<-merged.data.frame[varskeep] + } + output<-merged.data.frame + } + + return(output) + +} diff --git a/R/func_discord_regression_alt.R b/R/func_discord_regression.R similarity index 71% rename from R/func_discord_regression_alt.R rename to R/func_discord_regression.R index e424a0d..7b8fb06 100644 --- a/R/func_discord_regression_alt.R +++ b/R/func_discord_regression.R @@ -9,7 +9,8 @@ #' @param sex A character string for the sex column name. #' @param race A character string for the race column name. #' @param pair_identifiers A character vector of length two that contains the variable identifier for each kinship pair. -#' @param abridged_output Logical: TRUE (by default) and the fit model will be summarized with the \link[broom]{tidy} function. FALSE and the full model object will be returned. +#' @param abridged_output Logical: FALSE (by default) and the fit model will be summarized with the \link[broom]{tidy} function. FALSE and the full model object will be returned. +#' @param legacy Logical Logical: FALSE (by default) when true uses legacy code version #' #' @return Either a tidy data frame containing the model metrics or the full model object will be returned. See examples. #' @@ -34,8 +35,18 @@ #' race = NULL, #' abridged_output = FALSE) #' -discord_regression <- function(data, outcome, predictors, id = "extended_id", sex = "sex", race = "race", pair_identifiers = c("_s1", "_s2"), abridged_output = FALSE) { - +discord_regression <- function(data, + outcome, + predictors, + id = "extended_id", + sex = "sex", + race = "race", + pair_identifiers = c("_s1", "_s2"), + abridged_output = FALSE, + legacy=FALSE, + ...) { + +if(!legacy){ # non-legacy version check_discord_errors(data = data, id = id, sex = sex, race = race, pair_identifiers = pair_identifiers) if (is.null(sex) & is.null(race)) { @@ -83,6 +94,26 @@ discord_regression <- function(data, outcome, predictors, id = "extended_id", se model <- model %>% broom::tidy() } +}else{ + if(!discord_data){ + data<- discord_data(outcome=outcome,doubleentered=doubleentered, + sep=sep, + scale=scale, + data=data, + id=id, + full=FALSE, + legacy=TRUE) + } + arguments <- as.list(match.call()) + if(is.null(predictors)){ + predictors<-setdiff(unique(gsub("_1|_2|_diff|_mean|id","",names(data))),paste0(arguments$outcome)) + } + if(is.null(additional_formula)){ + additional_formula="" + } + model<-lm(as.formula(paste0(paste0(arguments$outcome,"_diff"," ~ "),paste0(predictors,'_diff+',collapse=""),paste0(predictors,'_mean+',collapse=""),arguments$outcome,"_mean",paste0(additional_formula))),data=data) + +} return(model) From 977be9f333eecbd4bdd73d352093e7ba2cf84982 Mon Sep 17 00:00:00 2001 From: Mason Garrison Date: Fri, 7 May 2021 09:53:52 -0400 Subject: [PATCH 4/4] revamp --- R/func_discord_data.R | 26 +++++++++++------- hidden/func_kinsim_alt.R => R/func_kinsim.R | 0 .../helpers_regression.R | 0 .../helpers_simulation.R | 0 R/sysdata.rda | Bin 0 -> 17319 bytes {hidden => R}/utils-pipe.R | 0 man/discord_data.Rd | 15 +++++----- man/discord_regression.Rd | 22 +++++++++++++-- 8 files changed, 43 insertions(+), 20 deletions(-) rename hidden/func_kinsim_alt.R => R/func_kinsim.R (100%) rename hidden/helpers_regression_alt.R => R/helpers_regression.R (100%) rename hidden/helpers_simulation_alt.R => R/helpers_simulation.R (100%) create mode 100644 R/sysdata.rda rename {hidden => R}/utils-pipe.R (100%) diff --git a/R/func_discord_data.R b/R/func_discord_data.R index a51644a..2ca1951 100644 --- a/R/func_discord_data.R +++ b/R/func_discord_data.R @@ -26,13 +26,13 @@ #' race = NULL, #' demographics = "none") #' -discord_data <- function(data, - outcome, - predictors, - id = "extended_id", - sex = "sex", - race = "race", - pair_identifiers= c("_s1", "_s2"), +discord_data <- function(data, + outcome, + predictors, + id = "extended_id", + sex = "sex", + race = "race", + pair_identifiers= c("_s1", "_s2"), demographics = "both", legacy=FALSE, ...) { @@ -61,11 +61,17 @@ if(!legacy){ # non-legacy version if (demographics == "none") { output <- out %>% purrr::reduce(dplyr::left_join, by = c("id")) } else if (demographics == "race") { - output <- out %>% purrr::reduce(dplyr::left_join, by = c("id", paste0(race, pair_identifiers[1]), paste0(race, pair_identifiers[2]))) + output <- out %>% purrr::reduce(dplyr::left_join, by = c("id", paste0(race, pair_identifiers[1]), + paste0(race, pair_identifiers[2]))) } else if (demographics == "sex") { - output <- out %>% purrr::reduce(dplyr::left_join, by = c("id", paste0(sex, pair_identifiers[1]), paste0(sex, pair_identifiers[2])))) + output <- out %>% purrr::reduce(dplyr::left_join, by = c("id", paste0(sex, pair_identifiers[1]), + paste0(sex, pair_identifiers[2]))) } else if (demographics == "both") { - output <- out %>% purrr::reduce(dplyr::left_join, by = c("id", paste0(sex, pair_identifiers[1]), paste0(sex, pair_identifiers[2])), paste0(race, pair_identifiers[1]), paste0(race, pair_identifiers[2])))) + output <- out %>% purrr::reduce(dplyr::left_join, by = c("id", + paste0(sex, pair_identifiers[1]), + paste0(sex, pair_identifiers[2]), + paste0(race, pair_identifiers[1]), + paste0(race, pair_identifiers[2]))) } }else{ arguments <- as.list(match.call()) diff --git a/hidden/func_kinsim_alt.R b/R/func_kinsim.R similarity index 100% rename from hidden/func_kinsim_alt.R rename to R/func_kinsim.R diff --git a/hidden/helpers_regression_alt.R b/R/helpers_regression.R similarity index 100% rename from hidden/helpers_regression_alt.R rename to R/helpers_regression.R diff --git a/hidden/helpers_simulation_alt.R b/R/helpers_simulation.R similarity index 100% rename from hidden/helpers_simulation_alt.R rename to R/helpers_simulation.R diff --git a/R/sysdata.rda b/R/sysdata.rda new file mode 100644 index 0000000000000000000000000000000000000000..a68e1f21c4c14e055ca90a0be6cacf015e8f2979 GIT binary patch literal 17319 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 literal 0 HcmV?d00001 diff --git a/hidden/utils-pipe.R b/R/utils-pipe.R similarity index 100% rename from hidden/utils-pipe.R rename to R/utils-pipe.R diff --git a/man/discord_data.Rd b/man/discord_data.Rd index 5329e11..320c1a5 100644 --- a/man/discord_data.Rd +++ b/man/discord_data.Rd @@ -11,8 +11,10 @@ discord_data( id = "extended_id", sex = "sex", race = "race", - pair_identifiers, - demographics = "both" + pair_identifiers = c("_s1", "_s2"), + demographics = "both", + legacy = FALSE, + ... ) } \arguments{ @@ -30,12 +32,11 @@ predicting the outcome.} \item{race}{A character string for the race column name.} -\item{pair_identifiers}{A character vector of length two that contains the -variable identifier for each kinship p} +\item{pair_identifiers}{A character vector of length two that contains the variable identifier for each kinship p} -\item{demographics}{Indicator variable for if the data has the sex and race -demographics. If both are present (default, and recommended), value should -be "both". Other options include "sex", "race", or "none".} +\item{demographics}{Indicator variable for if the data has the sex and race demographics. If both are present (default, and recommended), value should be "both". Other options include "sex", "race", or "none".} + +\item{legacy}{Logical Logical: FALSE (by default) when true uses legacy code version} } \value{ A data frame that diff --git a/man/discord_regression.Rd b/man/discord_regression.Rd index b61d860..2debff2 100644 --- a/man/discord_regression.Rd +++ b/man/discord_regression.Rd @@ -11,7 +11,10 @@ discord_regression( id = "extended_id", sex = "sex", race = "race", - pair_identifiers = c("_s1", "_s2") + pair_identifiers = c("_s1", "_s2"), + abridged_output = FALSE, + legacy = FALSE, + ... ) } \arguments{ @@ -30,16 +33,20 @@ predicting the outcome.} \item{race}{A character string for the race column name.} \item{pair_identifiers}{A character vector of length two that contains the variable identifier for each kinship pair.} + +\item{abridged_output}{Logical: FALSE (by default) and the fit model will be summarized with the \link[broom]{tidy} function. FALSE and the full model object will be returned.} + +\item{legacy}{Logical Logical: FALSE (by default) when true uses legacy code version} } \value{ -A tidy dataframe containing the model metrics via the - \link[broom]{tidy} function. +Either a tidy data frame containing the model metrics or the full model object will be returned. See examples. } \description{ Perform a Linear Regression within the Discordant Kinship Framework } \examples{ +# Return an abridged model output using the \link[broom]{package}. discord_regression(data = sample_data, outcome = "height", predictors = "weight", @@ -47,4 +54,13 @@ pair_identifiers = c("_s1", "_s2"), sex = NULL, race = NULL) +# Return the full model output. +discord_regression(data = sample_data, +outcome = "height", +predictors = "weight", +pair_identifiers = c("_s1", "_s2"), +sex = NULL, +race = NULL, +abridged_output = FALSE) + }