I have three replicates of an experiment which gives me ratios of the abundance of different peptides.
If I take the data for one peptide:
pep1 <- c(4.3, 5.7, 6.3)
I can use a one-sample t-test to test the hypothesis that the ratio is different from 1:
t.test(pep1, alternative=c("greater"), mu=1, paired=FALSE, var.equal=FALSE, conf.level=0.95)
output:
data: pep1 t = 7.4818, df = 2, p-value = 0.0087 alternative hypothesis: true mean is greater than 1 95 percent confidence interval: 3.703107 Inf sample estimates: mean of x 5.433333
However if I try and apply this to the rows of a dataframe called peptides
, where each row is a separate peptide, with three ratios:
t_test <- function(x) p_val = t.test(x, alternative=c("greater"), mu=1, paired=FALSE, var.equal=FALSE, conf.level=0.95)$p.value apply(peptides, 1, t_test)
I get the data are essentially constant
error.
I don't understand! I think apply is doing what I want because if I substitute 't-test' for 'mean' then it does the correct calculations.
My aim is to get the p-values for each peptide and then adjust these for multiple comparisons.
I'm relatively new to R, and any advice would be very much appreciated!
Best Answer
I found the problem in my data – There's one peptide where the ratios are identical in the three replicates. Of course this then means that it's not possible to estimate confidence intervals and perform t-tests. Removing this value allows the code to run fine.
Many thanks to everyone who's had a look at the problem.
Similar Posts:
- Solved – Alternative argument in Fisher’s exact test in R
- Solved – two-sample t-test VS two one-sample t-tests. What’s the difference
- Solved – Scipy Wilcoxon test: rejection direction
- Solved – p-values different for binomial test vs. proportions test. Which to report
- Solved – Ratio between control and treatment siginificantly different than 1