R limma:smooth.spline(lambda,pi0,df=smooth.df)中出错:输入中不允许缺少或无限值
我有一个数据集用于比较对照组和治疗组,并将limma用于pval。在我得到这样一个数据之前,它对我的大部分数据都很有效。我可以看出控制和治疗之间有区别。但我得到了错误:“smooth.spline中的错误(lambda,pi0,df=smooth.df): 输入中不允许缺少或无限值” 有谁能给我一些建议如何通过错误? 非常感谢R limma:smooth.spline(lambda,pi0,df=smooth.df)中出错:输入中不允许缺少或无限值,r,limma,q-value,R,Limma,Q Value,我有一个数据集用于比较对照组和治疗组,并将limma用于pval。在我得到这样一个数据之前,它对我的大部分数据都很有效。我可以看出控制和治疗之间有区别。但我得到了错误:“smooth.spline中的错误(lambda,pi0,df=smooth.df): 输入中不允许缺少或无限值” 有谁能给我一些建议如何通过错误? 非常感谢 head(df) > Gene ctr_1 ctr_2 tr_1 tr_2 > g1 20.50911 21.95617 2
head(df)
> Gene ctr_1 ctr_2 tr_1 tr_2
> g1 20.50911 21.95617 25.714 25.78235
> g2 18.05096 19.96261 22.49882 23.83518
> g3 22.57205 24.65282 27.58436 29.15457
> g4 18.4146 22.08009 22.75608 25.88455
> g5 16.59619 19.06972 17.20814 22.91926
> g6 19.4405 21.65192 26.57454 27.65457
> g7 18.53613 20.8472 23.27556 24.59854
> g8 16.57177 18.38918 20.04892 21.32175
> g9 16.73278 20.81868 21.16661 24.84625
> g10 17.644 19.89144 22.3238 24.54886
Gene = df$Gene
control<- c("ctr_1","ctr_2")
treatment<- c("tr_1","tr_2")
design <- model.matrix( ~ factor(c(rep(2, 2), rep(1, 2))))
colnames(design) <- c("Intercept", "Diff")
res.eb <- eb.fit(df[, c(treatment,control)], design,Gene)
头部(df)
>基因ctr_1 ctr_2 tr_1 tr_2
>g1 20.50911 21.95617 25.714 25.78235
>g2 18.05096 19.96261 22.49882 23.83518
>g3 22.57205 24.65282 27.58436 29.15457
>g4 18.4146 22.08009 22.75608 25.88455
>g5 16.59619 19.06972 17.20814 22.91926
>g6 19.4405 21.65192 26.57454 27.65457
>g7 18.53613 20.8472 23.27556 24.59854
>g8 16.5717718.38918 20.04892 21.32175
>g9 16.73278 20.81868 21.16661 24.84625
>g10 17.644 19.89144 22.3238 24.54886
基因=df$基因
我的猜测是,你的pvalue分布太奇怪了。做hist(p.mod)看看,如果它太“集中”在低值,那么这就是问题所在。有关更多信息,请参阅。谢谢您的建议,我将阅读链接信息!
eb.fit <- function(dat, design,Gene) {
n <- dim(dat)[1]
fit <- lmFit(dat, design)
fit.eb <- eBayes(fit)
logFC <- fit.eb$coefficients[, 2]
df.r <- fit.eb$df.residual
df.0 <- rep(fit.eb$df.prior, n)
s2.0 <- rep(fit.eb$s2.prior, n)
s2 <- (fit.eb$sigma) ^ 2
s2.post <- fit.eb$s2.post
t.ord <-
fit.eb$coefficients[, 2] / fit.eb$sigma / fit.eb$stdev.unscaled[, 2]
t.mod <- fit.eb$t[, 2]
p.ord <- 2 * pt(-abs(t.ord), fit.eb$df.residual)
p.mod <- fit.eb$p.value[, 2]
q.ord <- qvalue(p.ord)$q
q.mod <- qvalue(p.mod)$q
p.adj <-p.adjust(p.mod,method = "BH")
results.eb <-
data.frame(Gene,
logFC,
t.ord,
t.mod,
p.ord,
p.mod,
p.adj,
q.ord,
q.mod,
df.r,
df.0,
s2.0,
s2,
s2.post
)
return(results.eb)
}