这篇文章主要是最近研究人类行为应用的内容,主要简单叙述下复杂网络的幂率分布以及绘制Power-law函数一些知识,同时是一篇在线笔记。希望对您有所帮助,如果文章中存在不足或错误的地方,还请海涵~
        1.幂率分布
        2.Zipf定律
        3.Scale free
        4.Python绘制幂率分布
        这篇文章基础知识转载了别人的内容,这里强烈推荐大家阅读原文。此篇文章主要是讲述代码部分,定律我也还在学习中,和大家共勉。

一. 幂率分布

在我们的日常生活中Power Law(幂次分布,Power-law Distributions)是常见的一个数学模型,如二八原则。这个世界上是20%的人掌握80%的人的金钱去经营,20%的人口拥有80%的财富,20%的上市公司创造了80%的价值,80%的收入来自20%的商品,80%的利润来自20%的顾客等等。
        下图表示人类的财富幂率分布图,极少数人拥有微弱优势的人却拥有天文级别的财富。

为什么会有这样的差别呢?
        这是因为时间的乘积效应,智力上的微弱优势,乘以时间,就会得到价值(财富)几何级的增长。
        经济学财富分布满足Pareto Power law tail分布,语言中有词频的幂律分布,城市规模和数量满足幂律分布,音乐中有f分之1噪音(幂律分布)。通常人们理解幂律分布就是所谓的马太效应,二八原则,即少数人聚集了大量的财富,而大多数人的财富数量都很小,因为胜者通吃的原则。
        f(x)表示某一数量指标x的发生次数,即幂率分布公式。

幂率公式推导参考kevinelstri大神的博客,如下图所示:

再如钱学森通信反应间隔分布:

参考资料:
        关于幂律分布的一个笔记 - 哈克
        复杂网络的一些相关概念:power law(幂率分布)以及 scale free(无标度) - 刘永轩
        Python数据可视化:幂律分布 - kevinelstri

二. Zipf定律
        PS:这部分内容引用哈克老师的博客 "关于幂律分布的一个笔记 ",推荐给大家。
        Zipf是哈佛大学的语言学家,他在1932年研究英文单词的出现频率时,发现如果把单词频率从高到低排列,每个单词的出现频率和它的排名之间存在简单的反比关系:

在对其取对数变换后成为:

则在双对数坐标系下,该分布呈现为一条斜率为负幂指数的直线。这里r表示一个单词出现频率的排名,P(r)表示排名为r的单词的出现频率。在单词分布中,C约等于0.1,α约等于1。
        总结规律:只有少数英文单词才会被经常使用,大部分的单词很少被使用。
        这个规律在其他领域的数据分布里也得到了验证。
        另一个类似的定律是意大利经济学家Pareto提出的80/20法则,即20%的人口占据了80%的社会财富。个人收入X不小于某个值x的概率与x的常数次幂存在简单的反比关系:

称为Pareto定律。

三. Scale free

PS:这部分内容引用哈克老师的博客 "关于幂律分布的一个笔记 ",推荐给大家。
        一个网络的度分布如果服从power law,即有P(k)∼k−γ,(直观的看,就是少部分节点度极大,与许多节点相连,而大部分节点度都比较小),那么,这个网络就叫做无标度网络(scale free network)。 
        许多现实中的网络包括WWW,社交网络,性伴侣网络,PPI网络等都被认为是无标度网络,并且大部分实际网络中power law的指数γ一般都在2和3之间,并且网络直径极小(d~lnN,N为节点数)。
        对应的,随机网络的度分布是泊松分布,也就是钟形分布的,节点的度值一般不会比平均值高出很多或低很多。
        复杂网络的定义:具有自组织,自相似,吸引子,小世界,无标度中部分或全部性质的网络称为复杂网络。
        现实网络的无标度特性源于众多网络所共有的两种生成机制(Albert-Laszlo Barabasi ,Reka Albert,1999):
        (i) 网络通过增添新节点而连续扩张 
        (ii) 新节点择优连接到具有大量连接的节点上,第二点即新节点连接到已有节点的概率与该节点的度数成正比例如:

这样就可以生成度分布服从power law的网络。
        关于复杂网络的统计学机制可以参考Reka Albert的博士论文: 
        Statistic Mechanics of complex networks

四. Python绘制幂率分布
        推荐文章:Python数据可视化:幂律分布 - kevinelstri
                       【python数据挖掘课程】十二.Pandas结合SQL语句对比图分析
        下面是我前面文章关于博客数量的绘制图形,X轴为发表博客年份,Y轴为博客数量。如下图所示:

下图X轴表示发表博客的评论数,Y轴表示博客那个评论的总文章数量。

然后分别对X、Y坐标取log10对数,如下图所示,一个完美的幂率分布图。

具体代码如下所示:(因文章未发表,占不公开数据,抱歉)

# coding=utf-8
'''
' 这篇代码主要讲述获取MySQL中数据,再进行简单的统计
' 统计采用SQL语句进行 By:Eastmount CSDN 杨秀璋
'''
 
import matplotlib.pyplot as plt
import matplotlib
import pandas as pd
import numpy as np
import MySQLdb
from pandas import *
import math
 
# 根据SQL语句输出24小时的柱状图
try:
    conn = MySQLdb.connect(host='localhost',user='root',
                         passwd='123456',port=3306, db='test01')
    cur = conn.cursor() #数据库游标
 
    #防止报错:UnicodeEncodeError: 'latin-1' codec can't encode character
    conn.set_character_set('utf8')
    cur.execute('SET NAMES utf8;')
    cur.execute('SET CHARACTER SET utf8;')
    cur.execute('SET character_set_connection=utf8;')
    #sql = '''select DATE_FORMAT(FBTime,'%Y'), Count(*) from csdn_blog group by DATE_FORMAT(FBTime,'%Y');'''
    sql = '''select PLNum, count(*) from csdn_blog group by  PLNum;'''
    cur.execute(sql)
    result = cur.fetchall()        
    PLNum = [n[0] for n in result] #评论数
    Num = [n[1] for n in result]   #数量
    print len(PLNum), type(Num)
 
    #两边起对数log10
    PLNumlog = range(len(PLNum))
    Numlog = range(len(PLNum))
    i = 1
    while i < len(PLNum):
        print PLNum[i], Num[i]
        print math.log10(PLNum[i]), math.log10(Num[i])
        PLNumlog[i] = math.log10(PLNum[i])
        Numlog[i] = math.log10(Num[i])
        i = i + 1
    else:
        print 'end log10'
 
    #print PLNumlog
    #print Numlog
    
    matplotlib.style.use('ggplot')
    #df=DataFrame(Num[1:100], index=PLNum[1:100],columns=['Nums'])
    
    plt.scatter(PLNumlog[1:], Numlog[1:], marker='s')
    plt.title('Number of users published')
    plt.xlabel('The number of comment')
    plt.ylabel('The number of blog')
    plt.savefig('06csdn.png',dpi=400)
    plt.show()
 
 
#异常处理
except MySQLdb.Error,e:
    print "Mysql Error %d: %s" % (e.args[0], e.args[1])
finally:
    cur.close()
    conn.commit()  
    conn.close()

--------------------- 
作者:Eastmount 
来源:CSDN 
原文:https://blog.csdn.net/Eastmount/article/details/65443025 
版权声明:本文为博主原创文章,转载请附上博文链接!

[python数据分析] 简述幂率定律及绘制Power-law函数相关推荐

  1. Python 数据分析三剑客之 NumPy(四):字符串函数总结与对比

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  2. python画直方图成绩分析-Python数据分析:直方图及子图的绘制

    1.直方图的绘制也需要用到matplotlib下的pylab,只不过在绘制折线图时我们采用的是plot(),而绘制直方图时我们需要采用hist().由于在绘制过程中缺少真实数据,我在这里采用np.ra ...

  3. Python数据分析: matplotlib模块学习之绘制常用统计图

    matplotlib绘制常用的统计图 常用的统计图有散点图, 折线图, 条形图和直方图, 在前面我们已经讲解了折线图的基本实现,但其实绘制其他图形和折线图比起来也是相差不多的, 下面就来逐个讲解他们的 ...

  4. python数据分析及可视化(二十)Power BI的可视化制作以及A股上市公司数据分析

    可视化制作 通过图表展示如何用Power BI 制作可视化的图表,来展示可视的数据内容. 柱形图 用水平的柱子来表示不同分类数据的大小,类似于条形图,相当于竖着的条形图.堆积柱形图是不同的序列数据都堆 ...

  5. python海龟画笔速度_【判断题】Python海龟绘图中,设置画笔绘制速度的函数是speed()。...

    我国企业的会计核算一般以人民币为记账本位币.()A.正确B.错误 土石坝根据筑坝施工方法可以分为多种,其中应用最广泛的是().A.抛填式堆石坝B.定向爆破堆石坝C.碾 下列各种结算方式中,既可用于同城 ...

  6. Python 数据分析三剑客之 NumPy(五):数学 / 算术 / 统计 / 排序 / 条件 / 判断函数合集

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  7. Python 数据分析三剑客之 NumPy(一):理解 NumPy / 数组基础

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  8. Python 数据分析三剑客之 NumPy(六):矩阵 / 线性代数库与 IO 操作

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  9. Python 数据分析三剑客之 NumPy(三):数组的迭代与位运算

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

最新文章

  1. Revit:从入门到精通学习教程
  2. 如何利用输入输出流往文件中不断添加内容
  3. php zend框架入门,Zend Framework 入门——快速上手
  4. 机器学习基石第三讲:types of learning
  5. 腾讯极客挑战赛正式开赛!「鹅罗斯方块」开“玩”啦
  6. python二级简书_12月4日,总结发现杯,备战python二级
  7. magento 瘦身数据库
  8. Caffe2 的基本数据结构(Basics of Caffe2 - Workspaces, Operators, and Nets)[4]
  9. 太原理工电子信焦工程_电气工程及其自动化专业毕业后做什么工作?近几年就业和收入怎样...
  10. win7纯净版系统锁定系统时间的设置方法
  11. EF – 8.多对多关联
  12. 深度残差收缩网络:(四)注意力机制下的阈值设置
  13. Maven+Mybatis+Spring+SpringMVC实现分页
  14. VC线程同步技术剖析
  15. 李宏毅机器学习笔记——深度学习
  16. 【爬虫】python 微博评论数据分析
  17. JAVA 实现TCP请求转发
  18. 单例模式中饿汉模式和懒汉模式的线程安全问题
  19. ceph osd pg 状态介绍
  20. [PHP] ubuntu16.04配置Lamp环境(搭建linux+apache+mysql+php7环境)

热门文章

  1. ASP.NET MVC 异常Exception拦截
  2. SQLServer中进行sql除法运算结果为小数时显示0的解决方案
  3. 为什么密码比字符串更喜欢char []?
  4. linux 下安装node 环境
  5. 利用svg技术实现在线动画演示
  6. 大数据入门之Hadoop基础学习
  7. 分布式存储的三个基本问题
  8. grafana3.1.0安装配置
  9. IOS中GPS定位偏移纠正(适用于Google地图)
  10. 小块头大性能才能得到用户的青睐