美文网首页
R检验数据是否符合幂律分布

R检验数据是否符合幂律分布

作者: 生信小鹏 | 来源:发表于2022-11-01 23:32 被阅读0次

在进行WGCNA分析中,确定软阈值并给基因之间的相关性,加上一个幂次后,使得这种基因之间的连接度符合幂次分布。那么如何确定,或者通过统计学的方式检验,相关的分布符合幂律分布呢?

【WGCNA学习笔记】无尺度分布和软阈值中的计算为例,详细分解一下如何检验是否符合幂律分布。

原始计算

power <- 8
ADJ=abs(cor(datExpr,use = 'p'))^power

其中表达矩阵是行为样本名,列为基因名
这样,将相关性矩阵绝对值之后,都给了一个8次幂,结果如下

> dim(ADJ)
[1] 3600 3600
> ADJ[1:5,1:5]
             MMT00000044  MMT00000046  MMT00000051  MMT00000076  MMT00000080
MMT00000044 1.000000e+00 4.322615e-12 5.724787e-09 1.392642e-05 1.195759e-07
MMT00000046 4.322615e-12 1.000000e+00 1.022965e-02 5.504572e-13 2.455594e-10
MMT00000051 5.724787e-09 1.022965e-02 1.000000e+00 1.967975e-10 7.471142e-11
MMT00000076 1.392642e-05 5.504572e-13 1.967975e-10 1.000000e+00 8.623133e-14
MMT00000080 1.195759e-07 2.455594e-10 7.471142e-11 8.623133e-14 1.000000e+00

然后对每一列的基因进行求和,得到的就是这个基因跟其他基因相关性之和。减去1是排除了自身。

k=apply(ADJ,2,sum) -1
hist(k)

结果如下

> k[1:10]
MMT00000044 MMT00000046 MMT00000051 MMT00000076 MMT00000080 MMT00000102 MMT00000149 
  0.0814313  15.6397241  10.3721409   0.5134981  11.9155349   3.1397842  16.5059843 
MMT00000159 MMT00000207 MMT00000212 
 15.6716271  22.4635281   1.0466731 

横坐标是基因的连接度,纵坐标是拥有该连接点数的频率,大体看上去,是头大尾巴长的幂律分布。

使用R验证数据符合幂律分布

那么怎么验证一个数据分布符合幂律分布

image.png
图片来自无标度网络幂律分布

从这幅图可以看出,如果一个数据分布符合幂律分布,那么其自变量的对数因变量的对数是呈现线性关系的。

这个时候,就将问题转换为,是否符合线性关系的假设检验

线性关系的假设检验

先把之前的数据进行整理

cut1=cut(k,20)

#计算每个区间的平均值
binned.k=tapply(k,cut1,mean)
binned.k

# 计算每个区间频率
freq1=tapply(k,cut1,length)/length(k)
freq1

这个时候就是要看区间平均值和对数每个区间的频率的对数是否为线性关系

也就是,log(k)log(freq k)是否为线性关系

假设检验

H_0: \beta_1 = 0 (没有线性关系)
H_0: \beta_1 ≠ 0 (有线性关系)

myfit_log <- lm(log(freq1) ~ log(binned.k))
anova(myfit_log)
summary(myfit_log)

结果如下

> anova(myfit_log)
Analysis of Variance Table

Response: log(freq1)
              Df Sum Sq Mean Sq F value    Pr(>F)    
log(binned.k)  1 48.979  48.979  102.03 7.647e-09 ***
Residuals     18  8.640   0.480                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

这是方差分析表,结果表明模型拟合数据较好(F value = 102.03, P < 0.001)

> summary(myfit_log)

Call:
lm(formula = log(freq1) ~ log(binned.k))

Residuals:
    Min      1Q  Median      3Q     Max 
-1.7026 -0.4063  0.2258  0.5573  0.7013 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)     1.2268     0.5885   2.084   0.0516 .  
log(binned.k)  -1.7110     0.1694 -10.101 7.65e-09 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.6928 on 18 degrees of freedom
Multiple R-squared:   0.85, Adjusted R-squared:  0.8417 
F-statistic:   102 on 1 and 18 DF,  p-value: 7.647e-09

这是参数估计结果,自变量log(k)有显著意义( P < 0.001),常数项( P < 0.1),因变量log(freq k)变异中85%的可以被log(k)解释(R^2 = 0.85)

结论

综合拒绝H_0,接受H_1, log(k)log(freq k)呈线性关系,也就说明k和k的频率呈幂次关系。

相关文章

  • R检验数据是否符合幂律分布

    在进行WGCNA分析中,确定软阈值并给基因之间的相关性,加上一个幂次后,使得这种基因之间的连接度符合幂次分布。那么...

  • R检验数据是否符合正态分布

    正态分布又叫高斯分布,很多统计学的理论都是假设所用的数据符合正态分布。所以在研究数据时,首先要看数据是否符合正态分...

  • 大数据时代的“小数据 系列3 --Shapiro-Wilk检验

    什么是Shapiro-Wilk检验 Shapiro-Wilk检验用来检验小样本数据是否数据符合正态分布。类似于回归...

  • R语言统计检验

    R语言的各种检验 1、W检验(Shapiro–Wilk (夏皮罗–威克尔 ) W统计量检验) 检验数据是否符合正态...

  • r语言S-W和K-S两种正态性检验

    Shapiro-Wilk检验 Shapiro-Wilk检验用来检验是否数据符合正态分布,类似于线性回归的方法一样,...

  • R语言-T检验、秩和检验、百分比检验、卡方检验

    T检验与秩和检验 T检验:符合正态分布的数据用T检验秩和检验:不满足正态分布的数据用秩和检验 正态分布的检验 非正...

  • 刘嘉《概率论》15

    4.4幂律分布 幂律分布的数学特征是:无标度——在任何观测尺度下,幂律分布都呈现同样的分布特征。 幂律分布的含义—...

  • 内容平台的“幂律分布”

    一、幂律分布与正态分布 相信不少朋友应该知道“幂律分布”与“正态分布”的概念。首先,幂律分布与“二八法则”的概率类...

  • python数据分析之卡方检验

    卡方检验的用途: 1、检验某个连续变量的分布是否与某种理论分布相一致。例如是否符合正态分布,均匀分布,Poisso...

  • Hypothesis test

    参数检验与非参数检验 参数检验即检验模型是基于数据符合或具有某种特征,如t.test即要求数据符合正态分布,而非参...

网友评论

      本文标题:R检验数据是否符合幂律分布

      本文链接:https://www.haomeiwen.com/subject/jnhhtdtx.html