lm(y1~x, Quartet) abline(lmfit, col="red") lmfit # ################# Call: lm(formula = y1 ~ x, data plot(cooks.distance(lmfit)) lm多项式回归模型 plot(Quartet$x, Quartet$y2) lmfit <- lm(Quartet$y2~poly(Quartet <- lm(wages ~age+sex+education,data = SLID) summary(lmfit) par(mfrow=c(2,2)) plot(lmfit) # wages变化范围较大 ,为对称,log之 lmfit<- lm(log(wages) ~age+sex+education,data = SLID) plot(lmfit) vif(lmfit) # 共线性回归情况 lmfit1 <- glm(wages ~age+sex+education,data = SLID,family = gaussian) summary(lmfit1) lmfit2<- lm(wages
broom:Convert Statistical Analysis Objects into Tidy Tibbles.将统计计算结果装换成数据框格式 > lmfit<-lm(mpg~wt,mtcars ) > lmfit Call: lm(formula = mpg ~ wt, data = mtcars) Coefficients: (Intercept) wt 37.285 -5.344 > summary(lmfit) Call: lm(formula = mpg ~ wt, data = mtcars) Residuals: Adjusted R-squared: 0.7446 F-statistic: 91.38 on 1 and 30 DF, p-value: 1.294e-10 > broom::tidy(lmfit 166. # ... with 3 more variables: BIC <dbl>, deviance <dbl>, # df.residual <int> > broom::augment(lmfit
回归模型 线性回归 #构建简单线性回归模型 lmfit <- lm(mpg ~ wt, mtcars) summary(lmfit) summary(lmfit)$coef ? R-broom提取结果 1)tidy函数 library(broom) #返回模型的统计结果的数据框 tidy(lmfit) ? 看起来和summary(lmfit)$coef差不多,但还是有区别的: coef(summary(lmfit)) 中,terms保存在rawname中; 列名为Pr(>|t|)而不是p.value; 2 )augment()函数 #提取回归中每个原始点的拟合值和残差等信息 augment(lmfit) ? 3) glance()函数 #提取R squared,Adjusted R squared等 glance(lmfit) ?
程序清单: >lmfit <- lm(mpg ~ wt, data=mtcars) >summary(lmfit) >plot(lmfit) >predict(lmfit, mynewdata) 对待大数据集
## 标准化残差-相对于其标准偏差的比例残差 residueStandard<-rstandard(lmfit) df[residueStandard>3,] 以下是得到的结果: days.instant hist(lmfit$residuals) qqnorm(lmfit$residuals);qqline(lmfit$residuals) ? 于是,我们知道这个图偏离了正常值(正常值用直线表示)。 kurtosis(lmfit$residuals) [1] 2.454145 接下来,除了可视化残差的分布,我还想找出残差是否相互关联。 以下是用R语言计算的方法: modelmatrix<-model.matrix(lmfit) hatvalues<-hat(modelmatrix) 首先,我们得到一个矩阵形式的模型。 hatvalues<-lm.influence(lmfit)$hat 让我们考虑一下可以施加在每个权重上的限制。
x所有点都可以显示出来 直线模式: plot(mtcars$mpg~mtcars$disp) lmfit <- lm(mtcars$mpg~mtcars$disp) abline(lmfit) ?
fit = lmFit(exp,design):使用 limma 包中的 lmFit 函数,对阵列数据 exp 进行线性模型拟合。 library(dplyr)library(limma)design = model.matrix(~Group)fit = lmFit(exp,design)fit = eBayes(fit)deg limma包的芯片流程进行差异分析,核心代码如下library(limma)library(dplyr)# limma-arraydesign = model.matrix(~Group)fit = lmFit calcNormFactors(dge)#design <- model.matrix(~Group)#v <- voom(dge,design, normalize="quantile")#fit <- lmFit 这是因为Microarray的数据已标准化,可以直接用lmFit拟合,而RNA-seq需先采用calcNormFactors矫正测序深度的差异,并用voom去归一化转换数据,以适应线性模型。
/questions/160255/voom-mean-variance-trend-plot-how-to-interpret-the-plot 差异分析: #不需要voom转化时: fit <- lmFit sort.by="logFC") #不进行TMM转化,即不运行calcNormFactors(),直接进行voom转化 y = voom(counts, design, plot = T) fit <- lmFit
design_non_paried <- model.matrix(~ 0 + treatment) colnames(design_non_paried) <- c("Control","anti-BTLA") fit1 <- lmFit ) 7配对处理 7.1 整理分组矩阵 design_paried <- model.matrix(~ individuals + treatment) fit2 <- lmFit
####常规步骤## 线性拟合#fit <- lmFit(exprSet, design)#fit <- contrasts.fit(fit, contrast.matrix) #fit2 <- eBayes 33] after after after after #> Levels: before afterdesign <- model.matrix(~group+pairinfo)#fit <- lmFit
pData(phenoData)[,2], sep = "_")) design <- model.matrix(~combn) # describe model to be fit fit <- lmFit , phenoData=pd) class(maqc) eset <- rma(maqc) design <- model.matrix(~factor(eset[["Key"]])) fit <- lmFit Adult_mouse_heart_infarcted-Adult_mouse_heart_control") contrast.matrix <- makeContrasts(contrasts=constr, levels=design) fit <- lmFit design) <- levels(rna) design library(limma) aw <- arrayWeights(exprs(BSData.norm), design) fit <- lmFit
genes_expr # 首先是每个组都和第一个组比较,比如时间或者浓度梯度的药物处理 library(limma) design=model.matrix(~factor(g)) design fit=lmFit lapply(c('NEC', 'NTC','TC', 'TEC'),function(x) as.numeric( g %in% x))) library(limma) comp1toOther fit=lmFit genes_expr=n[,kp] group_list=g[kp] library(limma) design=model.matrix(~factor(group_list)) design fit=lmFit
group_list) library(limma) g=factor( group_list ) g g=relevel(g,'con') design=model.matrix(~g) fit=lmFit = batch, design = design) dim(ex_b_limma) ex_b_limma[1:4,1:4] fit=lmFit (dat=as.matrix(dat), batch=batch ) ex_b_sva[1:4,1:4] fit=lmFit
, y=Var2, data=melt(cor(mtcars[1:3])), fill=value, geom='tile') 3.6 进行多元回归分析 评估独立及非独立变量间的关联性 # 回归 lmfit <- lm(mtcars$mpg ~ mtcars$cyl) lmfit # Call: # lm(formula = mtcars$mpg ~ mtcars$cyl) # # Coefficients : # (Intercept) mtcars$cyl # 37.885 -2.876 summary(lmfit) #信息更详细? 0.7171 # F-statistic: 79.56 on 1 and 30 DF, p-value: 6.113e-10 # 画图 plot(mtcars$cyl,mtcars$mpg) abline(lmfit
pData(phenoData)[,2], sep = "_")) design <- model.matrix(~combn) # describe model to be fit fit <- lmFit , phenoData=pd) class(maqc) eset <- rma(maqc) design <- model.matrix(~factor(eset[["Key"]])) fit <- lmFit Adult_mouse_heart_infarcted-Adult_mouse_heart_control") contrast.matrix <- makeContrasts(contrasts=constr, levels=design) fit <- lmFit design) <- levels(rna) design library(limma) aw <- arrayWeights(exprs(BSData.norm), design) fit <- lmFit
使用limma进行差异表达分析 limma的核心函数是lmFit和eBayes, 前者是用于线性拟合,后者根据前者的拟合结果进行统计推断。 lmFit至少需要两个输入,一个是表达矩阵,一个是分组对象。 表达矩阵必须是matrix类数据结构,每一列都是存放一个样本,每一行是一个探针信息或者是注释后的基因名。 TS TS <- factor(TS, levels = unique(TS)) design <- model.matrix(~0+TS) fit <- lmFit(exprSet, design)
= ls()) load(file = "step2output.Rdata")#差异分析library(limma)design = model.matrix(~Group)#模型矩阵fit = lmFit coef = 2,number = Inf)#提取结果##函数表示analy=function(exp,Group){ design = model.matrix(~Group)#模型矩阵 fit = lmFit
))) dat1 <- dat[,c(obs_gsm,nor_gsm)] library(limma) design=model.matrix(~factor(group_list_1)) fit=lmFit 这个矩阵声明,我们要把 Tumor 组跟 Normal 进行差异分析比较 deg = function(exprSet,design,contrast.matrix){ ##step1 fit <- lmFit
model.matrix(~0+f) colnames(design) <- lev cont.wt <- makeContrasts("high-low", + levels=design) fit <- lmFit
0.9819655 0.4961708 0.6441539 -0.6976303 > dim(geneExpr) [1] 20 50 ###整体的差异分析 使用 limma 包做差异分析,其实就 lmFit library(limma) glm = lmFit(geneExpr , design = design ) glm = eBayes(glm) diff1=topTable(glm, coef=