I'm using R (not the 4 version yet ahah) I was advised to use FDR correction on my linear models. I have >200 participants, 140 continuous outcome variables, and each outcome variable is tested on the same 4 predictors. So all the models are: Y ~ x1 + x2 + x3 + x4, for all the 140 variables, where x1 is the predictor I'm interested in and the others (x2,x3,x4) I'm just using to control for their effects over the Y. How do I apply the FDR? For what do I have to correct? Do I have to correct for all the 140 outcome variables? Do I have to only correct for the 4 predictors? If you could explain the process and how to decide for what to correct in fdr it would be really good as I am struggling in understanding it. Thank you very much for the help, Best
Apply FDR correction on a large number of outcome variables
711 Views Asked by WannabeGandalf At
1
There are 1 best solutions below
Related Questions in R
- Getting "Extra args block must be a javascript object literal." error when trying to move a Google Task
- Unable to authenticate with Google Tasks - Homework
- Google APIs - Different Versions
- Syncing Google Tasks created in Google Apps with those created in our Web Application (Grails/Java)
- Allowing others to add Google tasks
- Is it possible to add some meta information to Google Tasks?
- Google Tasks Shared List Limit?
- Google task api due field
- How do you use Google tasks API from an Android app?
- Due Date is not updating on google
Related Questions in STATISTICS
- Getting "Extra args block must be a javascript object literal." error when trying to move a Google Task
- Unable to authenticate with Google Tasks - Homework
- Google APIs - Different Versions
- Syncing Google Tasks created in Google Apps with those created in our Web Application (Grails/Java)
- Allowing others to add Google tasks
- Is it possible to add some meta information to Google Tasks?
- Google Tasks Shared List Limit?
- Google task api due field
- How do you use Google tasks API from an Android app?
- Due Date is not updating on google
Related Questions in STAT
- Getting "Extra args block must be a javascript object literal." error when trying to move a Google Task
- Unable to authenticate with Google Tasks - Homework
- Google APIs - Different Versions
- Syncing Google Tasks created in Google Apps with those created in our Web Application (Grails/Java)
- Allowing others to add Google tasks
- Is it possible to add some meta information to Google Tasks?
- Google Tasks Shared List Limit?
- Google task api due field
- How do you use Google tasks API from an Android app?
- Due Date is not updating on google
Related Questions in FDR
- Getting "Extra args block must be a javascript object literal." error when trying to move a Google Task
- Unable to authenticate with Google Tasks - Homework
- Google APIs - Different Versions
- Syncing Google Tasks created in Google Apps with those created in our Web Application (Grails/Java)
- Allowing others to add Google tasks
- Is it possible to add some meta information to Google Tasks?
- Google Tasks Shared List Limit?
- Google task api due field
- How do you use Google tasks API from an Android app?
- Due Date is not updating on google
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
So you need to control for 140 test between predictor and outcomes, and you do the FDR for each predictor. We can try an example where x1 has an effect on response y 1 to 30, and no effect on the others, whereas x2,x3,x4 doesn't, first the data:
Good to use
broom
to tidy it up, we can fit a multi-response linear model, but each Y is regressed separately, the output is like:Now we clean up some of the terms, group by response and we can apply FDR using p.adjust, "BH" stands for Benjamini-Hochberg:
So before we look at the FDR results, we can think about multiple testing like this. If a predictor doesn't have an effect on any of the responses, and you do 140 test, you expect around 0.05*140 = 7 of the test to give you a p-value of 0.05. We can check for each predictor, how many of them have p < 0.05:
How will the p-value distribution look like? So you can see x1 bucks the trend in the above, and we can visualize this by plotting the pvalue distribution:
For x2,x3 and x4, we simulated them under the null, no effect on any responses and you can see the p-value follows a even distribution.
If we simply use a cutoff of 0.05, we will get all 7 false positives in the other predictors x1-x4, while some of them in x1 will be correct. FDR basically corrects for this expected distribution of p-values and we can check how many of them are significant at 5% FDR:
So we don't get any more hits with x2,x3,x4 which has no effect, while x1, which we simulated under 30 true effects gives 31 hits. You can also check out this video that explains in greater detail how this above works