精华内容
下载资源
问答
  • 探索变量之间关系(python3)

    千次阅读 2020-02-10 15:42:29
    在做数据分析的过程中。...探索数据变量之间是否存在某种关系/关联。大致步骤有: 变量的类型:类别型/数值型 可视化给出可能的方向:散点图、箱型图、直方图、... 需建立更严格的分析方式:假设检验。

    在做数据分析的过程中。我们往往是–理解需求–获取数据–清洗数据–简单描述统计–统计型分析报告;
    其实到这里还没完。如果我们还需要深入探索数据的价值,那么,单变量的分布检验–探索变量间的关系–建立关系模型–评估–总结等。
    接下来就来看看数据分析的其中重要的一环–探索变量间的关系。

    探索变量之间的关系

    探索数据变量之间是否存在某种关系/关联。大致步骤有:

    • 变量的类型:类别型/数值型
    • 可视化给出可能的方向:散点图、箱型图、直方图、…
    • 需建立更严格的分析方式:假设检验。假设变量间存在某种函数/逻辑等关联关系,进行检验。

    一、准备工具和数据

    1.1、工具:我们用python3

    通常我们把用于做数据分析的几个库直接先导入,基本是固定导入使用。

    import numpy as np               #科学计算基础库,多维数组对象ndarray
    import pandas as pd              #数据处理库,DataFrame(二维数组)
    import matplotlib as mpl         #画图基础库
    import matplotlib.pyplot as plt  #最常用的绘图库
    from scipy import stats          #scipy库的stats模块
    
    mpl.rcParams["font.family"]="SimHei"  #使用支持的黑体中文字体
    mpl.rcParams["axes.unicode_minus"]=False # 用来正常显示负号  "-"
    plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
    # % matplotlib inline  #jupyter中用于直接嵌入图表,不用plt.show()
    import warnings
    warnings.filterwarnings("ignore") #用于排除警告
     
    #用于显示使用库的版本
    print("numpy_" + np.__version__)
    print("pandas_" + pd.__version__)
    print("matplotlib_"+ mpl.__version__)
    
    numpy_1.17.4
    pandas_0.23.4
    matplotlib_2.2.3
    

    1.2、案例数据

    某餐厅顾客消费记录数据作为主要的案例数据。

    数据源:https://download.csdn.net/download/weixin_41685388/12144418

    '''
    某餐厅顾客消费记录.
    解释数据结构:
    total_bill:消费,tip:小费,sex:服务员性别,
    smoker:是否抽烟,day:星期几,time:午餐/晚餐,size:本桌人数
    '''
    tips = pd.read_csv(r"E:\tips.txt",sep='\t',encoding='utf-8') #导入txt格式数据
    display(tips.shape)  #样本量
    display(tips.sample(5))  #随机抽样5行
    
    (244, 7)
    
    total_billtipsexsmokerdaytimesize
    9627.284.00MaleYesFriDinner2
    23024.012.00MaleYesSatDinner4
    1716.293.71MaleNoSunDinner3
    11014.003.00MaleNoSatDinner2
    23510.071.25MaleNoSatDinner2

    二、数据变量与变量间的关系

    2.1、类别型数据 ~ 类别型数据间的独立性检验

    在这里插入图片描述
    在这里插入图片描述
    通用:用卡方检验

    小样本:用费舍尔检验(劣势:只能检验2*2)

    • 问题1:探索案例数据中服务员性别与星期几的关系?

    卡方检验

    '''①看变量的类型:类别型/数值型'''
    display(tips.sample(3))  #随机抽样3行
    
    statistics = tips[["sex","day"]].describe() #统计
    display(statistics)
    
    #两个变量均是类别型数据,统计往往是进行分类汇总,即需要生成交叉表,用pd.crosstab()
    count=pd.crosstab(tips.sex, tips.day)  
    display(count)
    
    total_billtipsexsmokerdaytimesize
    11629.935.07MaleNoSunDinner4
    14618.641.36FemaleNoThurLunch3
    16910.632.00FemaleYesSatDinner2
    sexday
    count244244
    unique24
    topMaleSat
    freq15787
    dayFriSatSunThur
    sex
    Female9281832
    Male10595830
    '''②可视化给出可能的方向'''
    count.T.plot(kind='bar')
    plt.show()
    

    在这里插入图片描述

    count=pd.crosstab(tips.sex, tips.day)  #构造交叉表
    print(stats.chi2_contingency(count,correction=False))
    #chi2 卡方检验   contingency列联表  列联表中每个格子数量至少为5
    #对性别和星期几进行卡方检验
    chi2, p, dof, ex = stats.chi2_contingency(count, correction=False)  #卡方检验,p值很小,AB有关
    print(p)
    #P值很小,拒绝原假设,说明性别与星期几有关系
    #独立性检验中,H0:AB无关,H1:AB有关系
    
    (13.22200137240661, 0.004180302092822257, 3, array([[ 6.77459016, 31.0204918 , 27.09836066, 22.10655738],
           [12.22540984, 55.9795082 , 48.90163934, 39.89344262]]))
    0.004180302092822257
    
    • 问题2:探索服务员性别与顾客是否吸烟是否有关?

    费舍尔精确检验(小样本)

    count=pd.crosstab(tips.sex,tips.smoker)  
    print(count)
    
    oddsratio,pvalue=stats.fisher_exact(count)  #费舍尔精确检验
    print(oddsratio,pvalue)
    #P值很大,不能拒绝H0,是否吸烟和男女没有关系
    
    smoker  No  Yes
    sex            
    Female  54   33
    Male    97   60
    1.0121836925960637 1.0
    
    #如果修改一下列联表中数据
    count.iat[0,0]=2  #手动将交叉表中的[0,0]位置的元素修改为2
    print(count)
    oddsratio,pvalue=stats.fisher_exact(count)  ##费舍尔精确检验
    print(oddsratio,pvalue)
    #0.03748828491096532 3.9900059898475383e-10
    #P值很小,拒绝H0,吸烟和男女有关系
    #fisher精确检验的优势:每个表格中数据不一定大于五
    #  费舍尔精确检验劣势:只能检验2*2
    
    chi2, p, dof, ex = stats.chi2_contingency(count, correction=False)  #卡方检验
    print(p)
    #卡方检验结果:P值很小,拒绝H0,吸烟和男女有关系
    
    smoker  No  Yes
    sex            
    Female   2   33
    Male    97   60
    0.03748828491096532 3.9900059898475383e-10
    1.9484526423911992e-09
    

    2.数值型~数值型间独立性检验

    • pearson:积差相关系数,反应两个变量之间的线性相关性
      在这里插入图片描述
      在这里插入图片描述

    • spearman:等级相关系数(Ranked data)—常用
      在这里插入图片描述
      spearman相关系数:先对所有变量进行排序,在做线性相关。与pearson不同,不假设变量为正态分布

    • Kendall’s Tau:非参数等级相关系数

      tau=(P-Q)/sqrt((P+Q+T)*(P+Q+U))

      P:同步数据对数,Q:异步,T:tie in x,U:tie in y

    区别及选用

    • pearson和spearman区别:

      如果有线性模式,也有一些离散点,spearman线性相关系数要大一些,因为离散点破坏了线性相关性,但是对rank排序影响不太大

      pearson只能处理两组数据,spearman可以处理多组序列

    • 如何选择:

      Kendall’s tau-b(肯德尔)等级相关系数:用于反映分类变量相关性的指标,适用于两个分类变量均为有序分类的情况。对相关的有序变量进行非参数相关检验;取值范围在-1-1之间,此检验适合于正方形表格;

      计算积距pearson相关系数,连续性变量才可采用;计算Spearman秩相关系数,适合于定序变量或不满足正态分布假设的等间隔数据; 计算Kendall秩相关系数,适合于定序变量或不满足正态分布假设的等间隔数据。

      计算相关系数:当资料不服从双变量正态分布或总体分布未知,或原始数据用等级表示时,宜用 spearman或kendall相关。

      总结:在大多数情况下选用spearman检验即可

    '''可视化给出可能的方向'''
    plt.scatter(tips.total_bill,tips.tip)
    plt.title("total_bill与tip散点图")
    plt.xlabel("total_bill") 
    plt.ylabel("tip") 
    plt.show()
    

    在这里插入图片描述

    #pearson就是统计学中学过的相关系数
    print(stats.pearsonr(tips.total_bill,tips.tip))
    #线性相关度和P值
    #相关系数=0.6757341092113643,p=6.692470646864041e-34
    #p<0.01,拒绝原假设,存在相关性
    
    (0.6757341092113643, 6.692470646864041e-34)
    
    # spearman:等级相关系数(Ranked data)
    rho,pval=stats.spearmanr(tips.total_bill,tips.tip)
    print(rho,pval)
    #p<0.01,拒绝原假设,两变量存在相关性
    
    0.6789681219001009 2.501158440923619e-34
    
    #多组数据的spearmanr独立性检验
    x2n=np.random.randn(100,2)
    y2n=np.random.randn(100,2)
    rho,pval=stats.spearmanr(x2n,y2n)
    print(rho)
    print(pval)
    print("\n")
    rho,pval=stats.spearmanr(x2n.T,y2n.T,axis=1)
    print(rho)
    print(pval)
    
    [[ 1.          0.04819682  0.22357036 -0.0589619 ]
     [ 0.04819682  1.          0.02417042 -0.09821782]
     [ 0.22357036  0.02417042  1.         -0.05353735]
     [-0.0589619  -0.09821782 -0.05353735  1.        ]]
    [[0.         0.63394219 0.02535319 0.56008632]
     [0.63394219 0.         0.81133805 0.33095957]
     [0.02535319 0.81133805 0.         0.59679005]
     [0.56008632 0.33095957 0.59679005 0.        ]]
    
    
    [[ 1.          0.04819682  0.22357036 -0.0589619 ]
     [ 0.04819682  1.          0.02417042 -0.09821782]
     [ 0.22357036  0.02417042  1.         -0.05353735]
     [-0.0589619  -0.09821782 -0.05353735  1.        ]]
    [[0.         0.63394219 0.02535319 0.56008632]
     [0.63394219 0.         0.81133805 0.33095957]
     [0.02535319 0.81133805 0.         0.59679005]
     [0.56008632 0.33095957 0.59679005 0.        ]]
    
    #Kendall's Tau:非参数等级相关系数
    x=[1, 2, 3, 4, 5, 5, 4, 6,-1]
    y=[3, 4, 3, 4, 5, 5, 3, 7, 7]
    '''
    tau=(P-Q)/sqrt((P+Q+T)*(P+Q+U))
    P:同步数据对数,Q:异步,T:tie in x,U:tie in y
    x中1-2增加,y中3-4增加,即为同步P
    x中2-3增加,y中4-3减少,即为异步Q
    x中两个数相等,但y中不相等,即为T
    y中两个数相等,但x中不相等,即为U
    '''
    plt.scatter(x,y)
    plt.title("x与y散点图")
    plt.xlabel("x") 
    plt.ylabel("y") 
    plt.show()
    
    tau, p_value = stats.kendalltau(x,y)#Kendall's Tau:非参数等级相关系数
    print(tau, p_value) #p>0.05,接受原假设,不相关
    
    rho,pval=stats.spearmanr(x,y) #用spearmanr独立性检验
    print(rho,pval) #p>0.05,接受原假设,不相关
    

    在这里插入图片描述
    0.3444233600968322 0.22913623766848912
    0.3247514077354534 0.3938410708377398

    3.数值型~类别型(自变量类别型,因变量数值型)

    • 服务员男女性别中顾客给小费是否不同?

    t检验:比较两个样本(比较两组均值)

    stats.ttest_ind(rvs1,rvs2) # 对两个样本进行t检验
    
    #结果分析:原假设两样本无差异,当p值越小时越拒绝
    
    rvs1 = stats.norm.rvs(loc=5, scale=10, size=500)
    rvs2 = stats.norm.rvs(loc=5, scale=10, size=500)
    print(stats.ttest_ind(rvs1, rvs2))
    #p值较大,接受原假设,两个样本的均值无明显差异
    
    Ttest_indResult(statistic=-0.7847691950148168, pvalue=0.4327751444523158)
    
    rvs1=tips[tips['sex']=='Male']['tip']
    print(rvs1.mean())
    rvs2=tips[tips['sex']=='Female']['tip']
    print(rvs2.mean())
    print(stats.ttest_ind(rvs1, rvs2))  
    #P值较大,不能拒绝原假设:男女性别与小费的多少无差异
    
    3.0896178343949052
    2.833448275862069
    Ttest_indResult(statistic=1.3878597054212687, pvalue=0.16645623503456763)
    
    #如果同一个样本重复抽样,stats.ttest_rel()需要用这个检验,但必须保证两组数据长度相等
    print(stats.ttest_rel(rvs1[:87],rvs2))
    #Ttest_relResult(statistic=1.3639526706337008, pvalue=0.1761417001637746)
    #t检验比较的是两组数的点估计和理想值得比较
    
    Ttest_relResult(statistic=1.3639526706337008, pvalue=0.1761417001637746)
    

    Kolmogorov-Smirnov 双样本检测 ks_2samp(比较两组分布)

    stats.ks_2samp(rvs1, rvs2) #判断两样本分布是否有差异
    
    #检查两样本分布之间是否存在差异,原假设两样本之间不存在差异
    
    rvs1=tips[tips['sex']=='Male']['tip']
    rvs2=tips[tips['sex']=='Female']['tip']
    print(stats.ks_2samp(rvs1, rvs2)) 
    #p值较大,接受原假设,两样本的分布不存在差异
    
    #画图检验一下,加上total_bill作为x轴,tip作为y轴
    plt.title("total_bill与tip关系图")
    plt.xlabel('total_bill')
    plt.ylabel('tip')
    plt.plot(tips[tips['sex']=='Male']['total_bill'],tips[tips['sex']=='Male']['tip'],'bo',label='Male')
    plt.plot(tips[tips['sex']=='Female']['total_bill'],tips[tips['sex']=='Female']['tip'],'go',label='Female')
    plt.legend(["Male","Female"],loc="best", frameon=True, title=" sex", ncol=1)
    plt.show()
    
    Ks_2sampResult(statistic=0.0797276520975182, pvalue=0.8545295823550555)
    

    在这里插入图片描述

    #进一步探索,费率,在国外餐厅费率即指小费/消费
    rvs1=tips[tips['sex']=='Male']['tip']/tips[tips["sex"]=='Male']['total_bill']
    rvs2=tips[tips['sex']=='Female']['tip']/tips[tips["sex"]=='Female']['total_bill']
    
    fig, (ax0, ax1) = plt.subplots(ncols=2, figsize=(10, 4))
    
    ax0.set_title('Male')
    ax0.set_xlabel("tip/total_bill")
    ax0.set_ylabel("数量")
    ax0.hist(rvs1, bins=50, facecolor='g', alpha=0.8)
    
    ax1.set_title('Female')
    ax1.set_xlabel("tip/total_bill")
    ax1.set_ylabel("数量")
    ax1.hist(rvs2, bins=50, rwidth=0.8)
    
    #fig.tight_layout()
    plt.show()
    
    #从两个直方图上看有些分布相似,但需要进一步探索
    
    #看一下均值和标准差
    print('Male:',rvs1.mean(),rvs1.std())
    print('Female:',rvs2.mean(),rvs2.std())
    
    #t检验(均值是否有明显不同,原假设是均值基本一样无差异)
    print(stats.ttest_ind(rvs1, rvs2))  
    #P值较大,不能拒绝原假设:男女性别对费率的影响无差异
    
    #正态分布检验
    print(stats.normaltest(rvs1)) #结果拒绝
    print(stats.normaltest(rvs2)) #结果拒绝
    
    print(stats.ks_2samp(rvs1, rvs2)) #判断两样的分布是否存在差异
    # p=0.08440693699139794,可以说是接受原假设,具有相同的分布,但是正态分布检验拒绝了,所以还可以做更多的探索
    # 由于p值相对较小,也可以说拒绝原假设,不具有相同的分布,p值的大小需要根据实际业务逻辑进行设定
    # 最常见的p值设置是0.01,0.05,0.1三个阀值
    # ANOVA方差分析、ANCOVA协方差分析、MANOVA多因素方差分析等方法做更多的探索
    

    在这里插入图片描述

    Male: 0.15765054700429748 0.06477787270951386
    Female: 0.16649073632892475 0.0536317262299475
    Ttest_indResult(statistic=-1.0833972270477996, pvalue=0.2797103849605489)
    NormaltestResult(statistic=174.74433683510114, pvalue=1.1343560308586256e-38)
    NormaltestResult(statistic=36.21379581439844, pvalue=1.368592496283602e-08)
    Ks_2sampResult(statistic=0.1651658247309466, pvalue=0.08440693699139794)
    

    单因素ANOVA方差分析

    原假设H0:所有组的均数相同
    方差分析检验对数据的假设条件:
        1. 样本之间相互独立
        2. 样本均来自正态分布
        3. 方差齐次性:各组方差相等
    对误差平方和,因素平方和进行F检验。如果F检验为1左右,认为不能拒绝原假设
    print(stats.f_oneway(rvs1,rvs2))
    
    #接着上面构造的数据
    rvs1=tips[tips['sex']=='Male']['tip']/tips[tips["sex"]=='Male']['total_bill']
    rvs2=tips[tips['sex']=='Female']['tip']/tips[tips["sex"]=='Female']['total_bill']
    print(stats.f_oneway(rvs1,rvs2)) #p=0.279710384960558,认为不能拒绝原假设,rvs1与rvs2均值相同
    
    '''
    注意:
    原假设的三个条件,其中方差齐次性:各组方差相等,但也不是说需要完全相等。
    如何检验方差齐次性假设?
    方差齐次性:stats.fligner(rvs1,rvs2) # 原假设方差相等
    '''
    x=[1,2,3,4,5]
    y=[1,2,3,4,5]
    print(stats.fligner(x,y))
    print('两组数的方差:',rvs1.var(),rvs2.var())
    print(stats.fligner(rvs1,rvs2)) #在方差检验过程中我们也接受方差是齐次的,虽然我们计算他们的方差明显是不相等的,但相差不大
    
    F_onewayResult(statistic=1.1737495515748593, pvalue=0.279710384960558)
    FlignerResult(statistic=6.590905151254103e-31, pvalue=0.9999999999999993)
    两组数的方差: 0.0041961727927699805 0.0028763620584040393
    FlignerResult(statistic=0.9521374099494737, pvalue=0.3291758341219779)
    

    ANOVA的非参数版本:Kruskal-Wallis H-test

    H0: 各组中值近似相等
        对数据亦有假设条件:Chi2分布,因此样本容量需不小于5
        stats.kruskal(rvs1,rvs2)
    相比于单因素ANOVA方差分析更加宽松
    
    rvs1=tips[tips['sex']=='Male']['tip']/tips[tips["sex"]=='Male']['total_bill']
    rvs2=tips[tips['sex']=='Female']['tip']/tips[tips["sex"]=='Female']['total_bill']
    print(stats.kruskal(rvs1,rvs2)) #p值较大,接受原假设,即中位数基本相同,两组变量无明显差异,且相互独立
    
    KruskalResult(statistic=2.2351202029645436, pvalue=0.13490613264268328)
    
    #练习:星期几对小费是否有影响
    display(pd.crosstab(tips.tip,tips.day).head())  #生成交叉表
    Thur=tips[tips['day']=='Thur']['tip']
    Fri=tips[tips['day']=='Fri']['tip']
    Sat=tips[tips['day']=='Sat']['tip']
    Sun=tips[tips['day']=='Sun']['tip']
    print(stats.f_oneway(Thur,Fri,Sat,Sun)) #单因素ANOVA方差分析
    #F_onewayResult(statistic=1.6723551980998699, pvalue=0.1735885553040592)
    
    '''
    方差分析检验对数据得假设:
    1.样本之间相互独立
    2.样本均来自正态分布
    3.方差齐次性:各组方差相等
    '''
    print(stats.fligner(rvs1,rvs2))  #方差齐次性检验
    #FlignerResult(statistic=1.6183029033640117, pvalue=0.20332858592898514)
    #P值较大,认为方差齐次
    
    #如果不满足以上任意一条
    '''
    ANOVA的非参数版本
    Kruskal-Wallis H-test
    H0:各组中值相等
    对数据也有假设:Chi2卡方分布,因此样本容量需不小于5
    给出得结果宽松一些,没有ANOVA强
    '''
    count=pd.crosstab(tips.tip,tips.day).head()  #构造交叉表
    print(stats.chi2_contingency(count,correction=False))  #卡方检验,p值较大,各类别变量间相互独立
    
    print(stats.kruskal(rvs2,rvs1))  #ANOVA的非参数版本检验
    #KruskalResult(statistic=0.7615717066668545, pvalue=0.38283710822789807)
    
    dayFriSatSunThur
    tip
    1.001300
    1.010010
    1.100100
    1.170100
    1.250201
    F_onewayResult(statistic=1.6723551980998699, pvalue=0.1735885553040592)
    FlignerResult(statistic=0.9521374099494737, pvalue=0.3291758341219779)
    (13.809523809523808, 0.3130368414958159, 12, array([[0.4, 2.8, 0.4, 0.4],
           [0.1, 0.7, 0.1, 0.1],
           [0.1, 0.7, 0.1, 0.1],
           [0.1, 0.7, 0.1, 0.1],
           [0.3, 2.1, 0.3, 0.3]]))
    KruskalResult(statistic=2.2351202029645436, pvalue=0.13490613264268328)
    
    展开全文
  • Python 数据分析之变量之间关系

    千次阅读 2018-07-20 13:44:00
    #变量之间关系 import numpy as np import pandas as pd import matplotlib.pyplot as plt from numpy import random from pandas import Series,DataFrame from scipy import stats tips=pd.read_csv...
    #变量之间的关系
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    from numpy import random
    from pandas import Series,DataFrame
    from scipy import stats
    
    tips=pd.read_csv('tips.csv')
    print(tips)
    
    '''
    1.从单变量到多变量
    单变量分析:数字特征,分布
    多变量分析:有没有关系,有多大关系
    '''
    #可视化分析:点图
    fig=plt.figure(figsize=(8,6))
    ax=fig.add_subplot(1,1,1)
    ax.plot(np.random.rand(50).cumsum(),'.')
    ax.plot(np.random.rand(50).cumsum(),'.')
    ax.plot(np.random.rand(50).cumsum(),'o')
    plt.show()
    
    #可视化分析tips.csv
    fig,ax=plt.subplots(1,1,figsize=(8,6))
    #subplots (行,列,.....)
    ax.plot(tips[tips['sex']=='Male']['tip'],'o',label='Male')
    ax.plot(tips[tips['sex']=='Female']['tip'],'o',label='Female')
    #label 为了画图例方便
    ax.legend(loc='best')
    plt.show()
    
    #可视化优势:更容易发现'模式'
    fig,ax=plt.subplots(1,1,figsize=(8,6))
    ax.plot(tips[tips['sex']=='Male']['total_bill'],tips[tips['sex']=='Male']['tip'],'o',label='Male')
    ax.plot(tips[tips['sex']=='Female']['total_bill'],tips[tips['sex']=='Female']['tip'],'o',label='Female')
    ax.legend(loc='best')
    plt.show()
    
    tips['tips_pct']=tips['tip']/tips['total_bill']
    tips['tips_pct'].hist(by=tips['sex'],bins=50,range=[0,0.8])
    plt.show()
    
    #可视化分析:箱线图
    #boxplot()
    rvs1=tips[tips['sex']=='Male']['tips_pct']
    rvs2=tips[tips['sex']=='Female']['tips_pct']
    plt.boxplot([rvs1,rvs2],labels=['Male','Female'])
    plt.show()
    
    #进一步探索变量之间的关系
    #独立性检验
    #1.类别型~类别型   性别与星期几的关系
    count=pd.crosstab(tips.sex,tips.day)
    print(count)
    '''
    day     Fri  Sat  Sun  Thur
    sex                        
    Female    9   28   18    32
    Male     10   59   58    30
    生成列联表
    '''
    count.T.plot(kind='bar')
    plt.show()
    
    print(stats.chi2_contingency(count,correction=False))
    #chi2 卡方检验   contingency列联表  列联表中每个格子数量至少为5
    #对性别和星期几进行卡方检验
    #(13.22200137240661, 0.004180302092822257, 3, array([[ 6.77459016, 31.0204918 , 27.09836066, 22.10655738],
    #       [12.22540984, 55.9795082 , 48.90163934, 39.89344262]]))
    chi2,p,dof,ex=stats.chi2_contingency(count,correction=False)
    #chi2表示卡方检验值,p表示P值,dof表示自由度,ex表示每个格子P(AB)应该的概率
    print(p)
    #0.004180302092822257
    #P值很小,拒绝原假设,说明性别与星期几有关系
    #独立性检验中,H0:AB无关,H1:AB有关系
    
    #费舍尔精确检验 只能检验2*2的表
    count=pd.crosstab(tips.sex,tips.smoker)
    print(count)
    '''
    smoker  No  Yes
    sex            
    Female  54   33
    Male    97   60
    '''
    oddsratio,pvalue=stats.fisher_exact(count)
    print(oddsratio,pvalue)
    #1.0121836925960637 1.0
    #P值很大,不能拒绝H0,是否吸烟和男女没有关系
    
    #如果修改一下列联表中数据
    count.iat[0,0]=2
    print(count)
    oddsratio,pvalue=stats.fisher_exact(count)
    print(oddsratio,pvalue)
    #0.03748828491096532 3.9900059898475383e-10
    #P值很小,拒绝H0,吸烟和男女有关系
    #fisher精确检验的优势:每个表格中数据不一定大于五
    #               劣势:只能检验2*2
    
    '''
    2.数值型~数值型
    pearson:积差相关系数,反应两个变量之间的线性相关性
    spearman:等级相关系数(Ranked data)
    Kendall's Tau:非参数等级相关系数
    '''
    #pearson就是统计学中学过的相关系数
    print(stats.pearsonr(tips.total_bill,tips.tip))
    #(0.6757341092113643, 6.692470646864041e-34)
    #线性相关度和P值
    
    #spearman相关系数:先对所有变量进行排序,在做线性相关
    # 1.与pearson不同,不假设变量为正态分布
    # 2. -1~+1  衡量变量之间的单调性
    #-1表示
    np.random.seed(1232133)
    #如果seed确定,那么x,y随机数是一样的
    x=np.random.randn(100)
    y=np.random.randn(100)
    rho,pval=stats.spearmanr(x,y)
    print(rho,pval)
    #0.031383138313831375 0.7565897728405165
    #P值很大,无法拒绝原假设,原假设:两个变量不相关(独立)
    
    #pearson和spearman区别
    #如果有线性模式,也有一些离散点,spearman线性相关系数要大一些,因为离散点破坏了线性相关性,但是对rank排序影响不太大
    #pearson只能处理两组数据,spearman可以处理多组序列
    
    x2n=np.random.randn(100,2)
    y2n=np.random.randn(100,2)
    rho,pval=stats.spearmanr(x2n,y2n)
    print(rho)
    print(pval)
    rho,pval=stats.spearmanr(x2n.T,y2n.T,axis=1)
    print(rho)
    print(pval)
    '''
    [[ 1.          0.00536454  0.10976298 -0.01923792]
     [ 0.00536454  1.          0.09857786 -0.04513651]
     [ 0.10976298  0.09857786  1.          0.17354935]
     [-0.01923792 -0.04513651  0.17354935  1.        ]]
    [[0.         0.95775479 0.27698447 0.84932628]
     [0.95775479 0.         0.3291814  0.65565667]
     [0.27698447 0.3291814  0.         0.08420292]
     [0.84932628 0.65565667 0.08420292 0.        ]]
    '''
    
    '''
    3.kendall's tau相关系数
    tau=(P-Q)/sqrt((P+Q+T)*(P+Q+U))
    P:同步数据对数,Q:异步,T:tie in x,U:tie in y
    '''
    x=[1,2,3,4,5,5,4,6,-1]
    y=[3,4,3,4,5,5,3,7,7]
    '''
    x中1-2增加,y中3-4增加,即为同步P
    x中2-3增加,y中4-3减少,即为异步Q
    x中两个数相等,但y中不相等,即为T
    y中两个数相等,但x中不相等,即为U
    '''
    tau,p_value=stats.kendalltau(x,y)
    print(tau,p_value)
    #0.3444233600968322 0.22913623766848912
    
    #数值型和数值型--回归分析,见下一章
    '''
    3.数值型~类别型(自变量类别型,因变量数值型)
    男女性别中给小费是否不同
    '''
    rvs1=tips[tips['sex']=='Male']['tip']
    rvs2=tips[tips['sex']=='Female']['tip']
    print(stats.ttest_ind(rvs1,rvs2))
    #Ttest_indResult(statistic=1.3878597054212687, pvalue=0.16645623503456763)
    #P值较大,不能拒绝原假设:男女性别给小费的费率没有不同
    
    #以上男女和性别不相关
    #如果同一个样本重复抽样,stats.ttest_rel()需要用这个检验,但必须保证两组数据长度相等
    print(stats.ttest_rel(rvs1[:87],rvs2))
    #Ttest_relResult(statistic=1.3639526706337008, pvalue=0.1761417001637746)
    #t检验比较的是两组数的点估计和理想值得比较
    
    #单因素ANOVA方差分析
    #对误差平方和,因素平方和进行F检验。如果F检验为1左右,认为不能拒绝原假设,AB不相关
    print(stats.f_oneway(rvs1,rvs2))
    #F_onewayResult(statistic=1.9261545619320048, pvalue=0.16645623503457202)
    
    #练习:星期几对小费是否有影响
    print(pd.crosstab(tips.tip,tips.day))
    Thur=tips[tips['day']=='Thur']['tip']
    Fri=tips[tips['day']=='Fri']['tip']
    Sat=tips[tips['day']=='Sat']['tip']
    Sun=tips[tips['day']=='Sun']['tip']
    print(stats.f_oneway(Thur,Fri,Sat,Sun))
    #F_onewayResult(statistic=1.6723551980998699, pvalue=0.1735885553040592)
    
    '''
    方差分析检验对数据得假设:
    1.样本之间相互独立
    2.样本均来自正态分布
    3.方差齐次性:各组方差相等
    '''
    print(stats.fligner(rvs1,rvs2))
    #FlignerResult(statistic=1.6183029033640117, pvalue=0.20332858592898514)
    #P值较大,认为方差齐次
    
    #如果不满足以上任意一条
    '''
    ANOVA得非参数版本
    Kruskal-Wallis H-test
    H0:各组中值相等
    对数据也有假设:Chi2卡方分布,因此样本容量需不小于5
    给出得结果宽松一些,没有ANOVA强
    '''
    print(stats.kruskal(rvs2,rvs1))
    #KruskalResult(statistic=0.7615717066668545, pvalue=0.38283710822789807)
    
    #帕累托分布
    #P(X>x)=(x/xmin)**(-k)
    #E(P)=xmin*k/(k-1)
    #构造一组帕累托分布,均值为50,k值(shape为1.2),且具有大于1000的点
    #size为多少才有把我里面有大于1000的数
    x=stats.pareto.rvs(b=1.2,loc=50,size=1000)
    p=1-stats.pareto.cdf(1000,b=1.2,loc=50)
    print(p)
    #0.0002671355417115384  不存在
    
    print(1-stats.binom.cdf(1,20000,p))
    #0.9696783490389687

     

    转载于:https://www.cnblogs.com/lzxanthony/p/9341004.html

    展开全文
  • 协方差为什么能表示两个随机变量的相关性?

    万次阅读 多人点赞 2015-08-12 20:48:58
    在machine learning中有时候要测评两个特征之间的联系的程度,举ml中一个简单的例子,现在要预测房子的价格,告诉了房子的面积X和花园的面积Y这两个特征,我们要测评一下X和Y之间的相关程度,即房子的面积和花园的...
    协方差为什么能表示两个随机变量的相关性?


    作者:Hg
    时间:2015.8

    1.引言

    作为machine learning的初学者,看到如此多的问题都能够用数学简单的进行解决,再次感觉到数学的魅力。数学不仅仅是枯燥的考试题,而是人类理解世界的一种重要的工具。所以同样在搞ml的筒子们,我认为搞好数学是关键。在machine learning中有时候要测两个 特征之间的联系的程度,举ml中一个简单的例子,现在要预测房子的价格,告诉了房子的面积X和花园的面积Y这两个特征,我们要测评一下X和Y之间的相关程度,即房子的面积和花园的面积是否有联系或者相关。那么这里就会用到了协方差,即Cov(X,Y),它表示了XY之间的相关程度。下面先让我们了解一下关于协方差的基本知识。

    2.什么是协方差和相关系数

    协方差的定义为:



    如果两个变量的协方差为正, 那么两个变量的变化趋势一致,即一个变量如果变大,那么这个变量也会变大。如果协方差为负,那么两个变量的变化趋势想反。如果为0,说明两个变量不相关。

    协方差虽然在一定程度上能够反映了X和Y相关间的联系,但它还是受X与Y量纲的影响。所以再计算X与Y的协方差之前,先对X与Y进行标准化变换(简单的说一下量纲,如果X的取值以万为单位,而Y的取值在0~1之间,那么Y微小的变化会引起X重大的变化,相反X的大变化使Y的变化微乎其微,所以我们要对其进行处理,而处理的方法就是对其进行标准化),即:



    由协方差的性质:


    且Cov(x*,y*)是无量纲的量,这样就消除了量纲对相关性的影响,由此得到了相关系数的概念。
    定义:(X, Y)是二维随机变量,D(X)> 0和 D(Y)> 0分表表示X和Y的方差, 那么上述的Cov(x*, y*)就表示随机变量X与Y的相关系数,记为ρXY。基本上,所有的相关教材上都讲到了这里就完事了,很多人对于相关系数或协方差为什么能够表示两个变量之间的的相关性也会一头雾水,下边我会从另外一个角度讲述协方差之所以可以表示相关性的原因。

    3.从向量的角度出发

    我们对随机变量X和Y随机取n个值,可以得到,又有它表示xi的平均数,所以我们可以得到差向量

    差向量的模可以表示为:



    差向量的方向反映了一个向量的波动方向。下面考虑两个差向量:

    从向量的角度进行考虑,可以用角度衡量两个向量的相关性,如果两个向量角度为90度,说明两个向量不相关(即变化趋势一点不同),如果两个向量角度为0度,说明两个向量极度相关,变化趋势一致。所以有:

    因此,求得:


    所以可以得出 为变量X,Y去量纲的相关系数
    为变量X,Y的协方差,也为未去量纲的相关系数。



    有什么错误之处,还请大家进行批评指正!

    展开全文
  • 本文以rssi(接收信号强度)滤波为背景,结合卡尔曼的五公式,设计 rssi 一维卡尔曼滤波器,用MATLAB语言实现一维卡尔曼滤波器,并附上代码和滤波结果图; 本文工分为以下几部分: 1、引言 2、模型的系统方程和...

    一、引言

    本文以rssi(接收信号强度)滤波为背景,结合卡尔曼的五个公式,设计 rssi 一维卡尔曼滤波器,用MATLAB语言实现一维卡尔曼滤波器,并附上代码和滤波结果图;

    本文工分为以下几个部分:

    1、引言

    2、模型的系统方程和状态方程

    3、卡尔曼滤波过程及五个基本公式

    4、公式中每个参数详细注释

    5、结合rssi滤波实例设计滤波器

    6、MATLAB实现滤波器

     

    二、模型的系统方程和状态方程

    • 系统的状态方程:

    \LARGE {\color{DarkBlue} }x_k = Ax_{k-1} + Bu_{k-1} + w_{k-1}

    状态方程是根据上一时刻的状态和控制变量来推测当前时刻的状态,\large w_{k-1}是服从高斯分布的噪声,是预测过程的噪声,它对应了 \large x_k 中每个分量的噪声,是期望为 0,协方差为 Q 的高斯白噪声\large w_{k-1} \sim N_{(0, Q))},Q即下文的过程激励噪声Q.

    • 系统的观测方程:

    \LARGE z_k = Hx_k + v_k

    观测方式是当前时刻的量测信息,\large v_k是观测的噪声,服从高斯分布,\large v_k \sim N_{(0,R)},R即下文的测量噪声R。

    • 卡尔曼滤波算法有两个基本假设:

    ( 1) 信息过程的足够精确的模型,是由白噪声所激发的线性( 也可以是时变的) 动态系统;

    ( 2) 每次的测量信号都包含着附加的白噪声分量 。当满足以上假设时,可以应用卡尔曼滤波算法。

     

    三、 卡尔曼滤波过程及五个基本公式

    • 卡尔曼滤波时间更新(预测)
    • 1. 向前推算状态变量  

    \LARGE \hat{x}_{k}^{-} = A\hat{x}_{k-1} + Bu_{k-1}

    • 2. 向前推算误差协方差

    \LARGE P_{k}^{-} = AP_{k-1} A^{T} + Q

    • 卡尔曼滤波测量更新(校正)

    • 3. 计算卡尔曼增益

    \LARGE K_k = \frac{P_{k}^{-}{H^T}}{HP_{k}^{-}H^T + R}

    • 4. 由观测变量\large z_k更新估计

    \LARGE \hat{x}_k = \hat{x}_{k}^{-} + K_k(z_k - H\hat{x}_{k}^{-})

    • 5. 更新测量误差

    \LARGE P_k = (I - K_kH)P_{k}^{-}

     

    四、 公式中每个参数详细注释

    1. \LARGE \hat{x}_{k-1}\LARGE \hat{x}_{k}:   分别表示 \LARGE k-1时刻和 \LARGE k时刻的后验状态估计值,是滤波的结果之一,即更新后的结果,也叫最优估计(估计的状态,根据理论,我们不可能知道每时刻状态的确切结果所以叫估计)。

       

    2. \LARGE \hat{x}_{k}^{-}:   \LARGE k 时刻的先验状态估计值,是滤波的中间计算结果,即根据上一时刻(\LARGE k-1时刻)的最优估计预测的\LARGE k时刻的结果,是预测方程的结果。

       

    3. \LARGE P_{k-1} 和 \LARGE P_k:  分别表示 k - 1 时刻和 k 时刻的后验估计协方差(即\LARGE \hat{x}_{k-1} 和 \LARGE \hat{x}_k 的协方差,表示状态的不确定度),是滤波的结果之一。

       

    4. \LARGE P_{k}^{-}:  k 时刻的先验估计协方差(\LARGE \hat{x}_{k}^{-}的协方差),是滤波的中间计算结果。

       

    5. \LARGE H: 是状态变量到测量(观测)的转换矩阵,表示将状态和观测连接起来的关系,卡尔曼滤波里为线性关系,它负责将 m 维的测量值转换到 n 维,使之符合状态变量的数学形式,是滤波的前提条件之一。

       

    6. \LARGE z_k: 测量值(观测值),是滤波的输入。

       

    7. \LARGE K_k: 滤波增益矩阵,是滤波的中间计算结果,卡尔曼增益,或卡尔曼系数。

       

    8. \LARGE A: 状态转移矩阵,实际上是对目标状态转换的一种猜想模型。例如在机动目标跟踪中, 状态转移矩阵常常用来对目标的运动建模,其模型可能为匀速直线运动或者匀加速运动。当状态转移矩阵不符合目标的状态转换模型时,滤波会很快发散。

       

    9. \LARGE Q : 过程激励噪声协方差(系统过程的协方差)。该参数被用来表示状态转换矩阵与实际过程之间的误差。因为我们无法直接观测到过程信号, 所以 Q 的取值是很难确定的。是卡尔曼滤波器用于估计离散时间过程的状态变量,也叫预测模型本身带来的噪声。状态转移协方差矩阵。

       

    10. \LARGE R: 测量噪声协方差。滤波器实际实现时,测量噪声协方差 R一般可以观测得到,是滤波器的已知条件。

       

    11. \LARGE B: 是将输入转换为状态的矩阵。

       

    12. \LARGE (z_k - H\hat{x}_{k}^{-}): 实际观测和预测观测的残差,和卡尔曼增益一起修正先验(预测),得到后验。

     

    五、 结合rssi滤波实例设计滤波器

    • 1、 建立模型系统方程和量测方程

    由于分析对象是无线信号的一维rssi状态,所以具体空间过程不关心,只需要从发射端发射到接收端接收是没有其他控制状态的,但是在传输过程中是存在噪声的,根据公式

    \LARGE {\color{DarkBlue} }x_k = Ax_{k-1} + Bu_{k-1} + w_{k-1}

    可得:A 为[1],B为[0],\large w_{k-1}为高斯白噪声可不关心

    • 2、建立量测方程

    由于接收设备可直接输出rssi值,根据公式

    \LARGE z_k = Hx_k + v_k

    可得:H为[1],\large v_k为量测噪声可不关心

    • 3、分析Q和R

    假如\large w已经分析出一系列的数据,则\large Q = cov(w);

    假如\large v已经分析出一些列的数据,则\large R = cov(v);

    • 4、初始值确定

    给滤波过程的初始状态初始化。

    • 5、最后一步,就是对照公式根据理解,套公式,写程序。

     

    六、MATLAB实现滤波器 

    • 1、 滤波器设计
    function z = kalmanFilter(x)
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %
    %  function z = kalmanFilter(x)
    %
    %>
    %> @brief 一维卡尔曼滤波
    %>
    %> @param[out]  z             滤波后的结果
    %> @param[in]   x             需要滤波的数据
    %>
    %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
        % 卡尔曼相关变量定义
        persistent xk xk_1;             % 状态量
        persistent zk;                  % 观测量
        persistent A;                   % 状态转移矩阵
    %     persistent B;                   % 控制输入模型
        persistent H;                   % 观测矩阵
        persistent Pk Pk_1;             % 误差协方差矩阵
        persistent Q;                   % 状态噪声协方差矩阵
        persistent R;                   % 观测噪声协方差矩阵
        
        % 卡尔曼相关参数初始化
        if isempty(xk)
            A = 1;
            H = 1;
            Pk = 1;
            Pk_1 = 1;                   % 初始误差协方差为1
            Q = 0.01;                   % 反应两个时刻rssi方差
            R = 0.05;                   % 反应测量rssi的测量精度
            xk = 0;
            xk_1 = 0;
            zk = 0;
        end
        
        I = 1;
        if xk_1 == 0
            xk_1 = x;
            xk = x;
        else
            zk = H*x;                   % 观测量方程
            % 预测
            X = A*xk_1;                 % 状态预测
            P = A*Pk_1*A' + Q;          % 误差协方差预测
            % 更新(校正)
            K = P*H'*inv(H*P*H'+R);     % 卡尔曼增益更新
            xk = X + K*(zk - H*X);      % 更新校正
            xk_1 = xk;                  % 保存校正后的值,下一次滤波使用
            Pk = (I - K*H)*P;           % 更新误差协方差
            Pk_1 = Pk;                  % 保存校正后的误差协方差,下一次滤波使用
        end
        
        % 滤波结果返回
        z = xk;
    end
    • 2、仿真运行
    %% 1. 导入数据
    [fname, pname] = uigetfile('*', 'Sample Dialog Box');
    fileID = fopen(strcat(pname, fname));
    data = cell2mat(textscan(fileID,'%f%f','delimiter', ',','headerlines',0));
    rssi = data(:, 1);
    
    %% 2. 卡尔曼滤波
    rssi_opt = zeros(size(rssi,1), 1);
    for k = 1:size(rssi,1)
        rssi_opt(k) = kalmanFilter(rssi(k));
    end
    
    %% 3. 滤波检验
    figure(1);
    plot(rssi, 'Color', 'r', 'Marker', 'o'); hold on;
    plot(rssi_opt, 'Color', 'b', 'LineStyle', '-', 'Marker', '+'); hold off;
    legend('rssi原始波形', 'rssi经过滤波后的波形');
    title('rssi滤波对比');
    • 3、运行结果

    展开全文
  • 近期总结一一些面试题 都是企业的面试题笔记题 感觉薪资10k下的都会出笔试题 ...同时分享一自己录制的CSS3动画特效经典案例【推荐教程】--后期会更新vue框架 微信小程序等内容。 https://ke.qq.com/cou...
  • IBM SPSS Statistics的列联表分析,也称为交叉表分析,用于分析两个或以上分组变量的相关关系,在分析影响满意度的因素、药物有效性等方面都有很好的应用。 本文将以较为简单的二乘二列联表卡方检验为例,介绍一下...
  • Spring入门第一讲——Spring框架的快速入门

    万次阅读 多人点赞 2017-04-08 00:27:34
    Spring是一开源框架,Spring是于2003年兴起的一轻量级的Java开发框架,由Rod Johnson创建。简单来说,Spring是一分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。 Spring是一开源框架,Spring是于2003年...
  • 数据库面试题

    千次阅读 多人点赞 2018-05-24 10:46:20
    存储过程是一预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。 调用: 1)可以用一命令对象...
  • 图像分割综述

    万次阅读 多人点赞 2019-07-09 22:03:48
    图像分割是计算机视觉研究中的一经典难题,已经成为图像理解领域关注的一热点,图像分割是图像分析的第一步,是计算机视觉的基础,是图像理解的重要组成部分,同时也是图像处理中最困难的问题之一。所谓图像分割...
  • 测试开发笔记

    万次阅读 多人点赞 2019-11-14 17:11:58
    环境搭建 195 其他 196 输入域 196 输出域 196 异常分析 196 错误猜测 196 第一阶段 第一章 测试基础 什么是软件测试: 两个依据(需求、测试用例),两个方法(手工、自动),一个对比(预期结果和实际结果的对比)...
  • 主成分分析和因子分析的介绍、区别和联系

    万次阅读 多人点赞 2019-07-14 00:46:00
    两个方法的推导我也还有一些没有完全理解,因此中间有些理解可能有误,请大家批评指正 主成分分析 主成分分析:将多个有一定相关性的指标进行线性组合,以最少的维度解释原数据中尽可能多的信息为目标进行降维,降维...
  • 数据库面试

    千次阅读 多人点赞 2019-02-13 09:03:42
    一、数据库问答题 1. SQL语言包括哪些类型? 数据定义DDL:Create Table,Alter Table,Drop Table, Create/Drop Index等 ...内连接是保证两个表中所有的行都要满足连接条件,而外连接则不然。 在外连接中...
  • 公式简单翻译一下是:对于X,Y两个变量,每个时刻的“X值与其均值之差” 乘以 “Y值与其均值之差”得到一个乘积,再对这每时刻的乘积求和并求出均值。 总结一下,如果协方差为正,说明X,Y同向变化,协方差越大说明同...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    C#程序中每个变量或函数都必须属于一个类,包括主函数Main(),不能象C或C++那样建立全局变量。C#语言程序总是从Main()方法开始执行,一个程序中不允许出现两个两个以上的Main()方法。请牢记C#中Main()方法必须被...
  • 软件测试面试题汇总

    万次阅读 多人点赞 2018-09-27 12:31:09
    ... 软件测试面试题汇总 测试技术面试题 ...........................34、简述集成测试与系统测试关系? ............................................................................................................
  • 21、redis备份到磁盘的两个算法 22、kafka常见消息引擎泛型 23、项目中使用的rabbitMQ案例 24、E-R图 实体-联系图(Entity Relationship Diagram) 25、MyBatis和SpringDataJPA的区别 26、ORM框架映射的实体类中为什么...
  • 基于MATLAB的语音信号处理

    万次阅读 多人点赞 2018-07-15 01:21:20
    基于MATLAB的语音信号处理摘要:语音信号处理是目前发展最为迅速的信息科学研究领域中的一,是目前极为活跃和热门的研究领域,其研究成果具有重要的学术及应用价值。语音信号处理的研究,对于机器语言、语音识别、...
  • 文章目录一、简单相关性分析1、变量间的关系分析(1)函数关系(2)相关关系i、平行关系ii、依存关系iii、两者关系2、简单相关分析(1)计算两变量之间的线性相关系数i、协方差定义、柯西-施瓦尔兹不等式a、协方差...
  • 五、相关与回归分析

    千次阅读 2021-02-10 10:54:15
    变量关系的度量 一、变量间的关系 二、相关关系的描述与测度 一元线性回归 一、一元线性回归模型 二、参数的最小二乘估计 三、回归方程的拟合优度 四、显著性检验 利用回归方程进行估计和预测 一、点估计 二、区间...
  • UML图中类之间关系

    万次阅读 2018-01-11 19:09:18
    UML图中类之间关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。 2) 在系统中,每类具有一定的职责...
  • 无线传感器网络复习大纲

    千次阅读 多人点赞 2019-04-30 10:31:40
    第一章 考点: 无线传感器网络组成部分,概念、特点(了解) 分布式特点(了解) 实时性、时效性(了解) ...无线传感器概念:无线传感器网络是一种特殊的无线通信网络,它是由许多传感器节点通过无线...
  • 统计学变量的相关性检验

    千次阅读 2019-11-05 07:41:08
    相关性反应的是变量之间的变换趋势和程度。范围在-1,+1之间,正值为正相关,负值为负相关,在样本数量充足的情况下,0即意味着两个变量是完全独立的。 1.皮尔森系数(peaarson) 皮尔森系数是利用协方差与...
  • 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。 2) 在系统中,每类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么...
  • 变量分析、组合变量分析

    千次阅读 2020-04-20 21:23:16
    会使数据分布在四个象限 当s_xy为正时,表示变量x、y是正的线性关系,即x增加,y增加 当s_xy为负时,表示变量x、y为负的线性关系,即x增加,y减小 当s_xy=0时,表示数据均匀的分布在四个象限中,两个变量基本没有...
  • UML 用例图 、类图 及其之间关系

    万次阅读 2019-04-15 11:51:57
    一、用例图 1、什么是用例图  用例图源于Jacobson的OOSE方法,用例图是需求分析的产物...它的主要目的就是帮助开发团队以一种可视化的方式理解系统的功能需求,包括基于基本流程的“角色”关系以及系统各个功...
  • 多重对应分析在超过两个以上定类变量时有时候非常有效,当然首先我们要理解并思考,如果只有三个或有限的几个变量完全可以通过数据变换和交互表变量重组可以转换成两个定类变量,这时候就可以用简单对应分析了。...
  • 前沿:最近太忙,这系列已经很久没有更新了,本次就更新一Deb大神的NSGA2的“升级版”算法NSGA3。因为multi-objective optimization已经被做烂了,现在学者们都在做many-objective optimization,也就是5以上...
  • ahk变量与内置变量

    千次阅读 2017-02-09 10:14:35
    (为了提高性能, 在内部会对数字进行缓存以避免与字符串之间的转换.) 变量的作用域和声明: 除了函数中的 局部变量, 其他所有变量都是全局的; 即可以在脚本的任意位置读取或修改它们的内容. 除了在函数页面注明...
  • java 类之间的依赖关系 -------转

    千次阅读 2019-02-27 10:49:37
    指的是一类(称为子类、子接口)继承另外的一类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,921
精华内容 18,768
关键字:

反应两个变量之间关系