Giter Site home page Giter Site logo

squidgroup / squid Goto Github PK

View Code? Open in Web Editor NEW
34.0 5.0 7.0 15.84 MB

Statistical Quantification of Individual Differences: an simulation tool for understanding multi-level phenotypic data in linear mixed models

License: Other

R 52.79% CSS 0.22% HTML 45.97% JavaScript 1.02%
linear-mixed-effects-modelling multilevel-data phenotypic-equation variance-components phenotypic-plasticity reaction-norm repeatability personality simulations

squid's People

Contributors

alrutten avatar hallegue avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

squid's Issues

Ve and VG don't work in the Full model

The default values of the residual and group variances don't work in the full model. But they get updated and properly accounted for when the user changes them.

squidApp doesn't run in R

  1. @hallegue the squidApp does not run in R due to an error on the "squidR" page. You might or might not be aware of this, but I have tracked down the issue to l85-86 in ui.R:
      tabPanel("squidR",
      				 fixedPage(wellPanel(shiny::includeMarkdown("./source/pages/squidr/squidr.md")))

includeMarkdown(.) seems case sensitive and the file & directory name include a capital R instead of a small r. When that is changed, the app runs in R.

  1. There are various warnings thrown by lines that include icon("refresh") in var_fullmodel.R and var_modules.R which, if the warning text is correct, should be corrected to icon("sync").

  2. A final warning seems to be thrown by navbarpage(.) in ui.R of which I am still unsure how to improve that.

@hallegue please let me know if you would like me to submit a PR with fixes.

case sensitivity and filenames

Hi Hassen!

some file systems are case sensitive, you may want to accomodate for that (case in point: source("./source/pages/fullmodel/UIenvironment.R",local=TRUE)
does not work for me (ubuntu 14.04), as the actual filepath is
source("./source/pages/fullModel/UIenvironment.R",local=TRUE)
)

add in simulating multivariate effects

there a probably several ways we can implement simulating multivariate effects. Perhaps have one that allow the user to just put in parameters at the different levels and then everything gets added up, and another way where things can more specifically be added up

explanation of resid parameters

Likely very easy comment to address, but as far as I can tell, there is no explanation for what/how to specify the 'cov' parameter in the residual arguments in the simulation? I assume this is just residual variance, correct? This just became apparent to me when I noticed that cov =1 for the first few simulations (simple linear model), but cov =0.3 for the next few (interactions and non-linear effects) without any explanation as to why this changed?

Naming the levels of variation

I think naming the lists observation and individual may be restrictive. Can we go with level one, level two or something like that. Also useful when there are more than two levels.

Add extra documentation to SQUID app

Add more documentation to SQUID app (page "Full model (Step by step)") that describes the full model equation.

  • Add Table 1 and Table S1 from MS1: "SQuID โ€“ Statistical Quantification of Individual Differences: an educational and statistical tool for understanding multi-level phenotypic data in the mixed modelling framework".

Problem with the function ifelse

Hi,
I have a problem running squidApp, it may be because of the function ifelse
This is a new problem because I didn't any trouble 6 months ago.
I run :
library(squid) squidApp()

And I get this warning:

Warning: Error in rep: attempt to replicate an object of type 'environment'
46: ifelse
45: [./source/server/fullmodel/SVRFullModel.R#310]
2: shiny::runApp
1: squidApp

I will be very gratefull if you can help me.
Thank you

Error with squidApp (No such file directory)

This error occurs when running squidApp:

Warning in file(filename, "r", encoding = encoding) :
  cannot open file './source/pages/full_model_sbys/ui_fullmodel_sbys_bivar_summary.R.R': No such file or directory
Warning: Error in file: cannot open the connection

add in interactions into parameter list

need a way to nicely specify interactions between covariates. Probably do this through allowing a user to add a named interaction parameter to the parameter list, which they can add into their model formula

Name of the `sim_population` function

To make the function name more general, I think the word "population" should be avoided.

For example, this function could be named: simulate(), simulate_data(), sim_data()

add in simulating fixed factors

Need to work out a nice way to add factors with fixed effects, not simulated from a normal distribution. If someone wants to simulate sex effects, for example, then this is likely to be a fixed difference between sexes, rather than one drawn from a distribution.

Column and row names for the (co)variance matrices

It'll be nice to set the column and row names of the (co)variance matrices with the predictor names.

It'll be easier and faster for the users to understand those matrices when they extract them from the squid output.

For example:

squid_data <- sim_population(
  parameters=list(
    observation=list(
      names=c("temperature","rainfall", "wind"),
      mean = c(10,1,20),
      cov  = matrix(c(1,0,1,0,0.1,0,1,0,2), nrow=3 ,ncol=3),
      beta =c(0,-3,0.5),
      n_level=2000
    ),
    residual=list(
      mean=10,
      cov=1,
      n_level=2000
    )
  )
)

cov_mat <- squid_data$parameters$observation$cov
cov_mat
     [,1] [,2] [,3]
[1,]    1  0.0    1
[2,]    0  0.1    0
[3,]    1  0.0    2

colnames(cov_mat) <- rownames(cov_mat) <- squid_data$parameters$observation$names
cov_mat
           temperature rainfall wind
temperature           1      0.0    1
rainfall              0      0.1    0
wind                  1      0.0    2

The same thing could be applied to the mean and the beta vectors.

Predictors' Covariance matrix

I'm wondering if isn't more user-friendly to have the predictors' (co)variance matrix as a variance/correlation matrix instead?

Error message for n_level of observation and residual

The observation and the residual levels should have the same size (i.e., n_level).

When setting different values, such as in this code:

squid_data <- sim_population(
  parameters = list(
    observation = list(
      names = c("temperature", "rainfall"),
      n_level = 1000
    ),
    residual = list(
      cov = 1,
      n_level = 2000
    )
  )
)

The following error is returned:
Error in (function (..., deparse.level = 1) : number of rows of matrices must match (see arg 2)

It'll be nice to have a more informative error message such as: "Error: The observation and the residual levels must have the same number of levels (i.e., n_level)"

Also, it'll be nice to check that the n_level is a positive integer otherwise return an error message. This could be done for any input parameter.

Number of observations in `make_structure()`

In the function make_structure() when the number of observations entered by the user (N) is lower or not a multiplicative of the minimum number of observations to generate properly the grouping levels (Nlevel), the function returns an error.

Example:

ds <- make_structure(structure = "sex(2)/individual(10)", N=9)
ds <- make_structure(structure = "sex(2)/individual(10)", N=38)

 Error in levels[, i] <- rep(1:Ns[i], each = N/Ns[i]) : 
  number of items to replace is not a multiple of replacement length 

here:
N = 9 or 38
and Nlevel = 10*2 = 20

It would be nice to either:
(1) return a constructive error message
(2) or (which I recommend) automatically adjust N to Nlevel or to the closest multiplicative of Nlevel, and return a warning message to inform the user that N was changed.

This could also be an issue when multiple grouping structures are defined. Ex:

ds <- make_structure(structure = "sex(2)/individual(10) + season(4)/day(7)", N=40)

N = 40
Nlevel1 = 20
Nlevel2 = 28

The user should be warned that samples sizes within nested structures should match among nested structures and with N.

Write function documentation

Write and generate documentation (using roxygen2 packgae) for these SQUID package functions:

  • runSQUIDapp()
  • runSQUIDfct()

Name of the `pop_data()` function

I suggest to change the name of the pop_data() function to: get_data()

Also the data of each step of the squid process could be accessed through, for example, these functions:

  • get_data_structure()
  • get_population_data()
  • get_sample_data()

Many populations within a world

I am not sure if it is relevant at this stage. But we need to be able to simulate many populations within a world. I assume there will be a sampling function allowing to sample the generated population data using "pop_data". However we still need to generate different populations with the same parameters. Maybe an argument within "pop_data".

Default residual variance

The residual level does not have a default variance value. This code returns an error:

squid_data <- sim_population(
  parameters = list(
    residual = list(
      n_level = 2000
    )
  )
)
Error: The number of parameters given for residual are not consistent

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.