Python:3个常用数据检验代码实现

常规库导入

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings("ignore")
pd.options.display.max_columns = None #显示所有列
pd.set_option('display.float_format', lambda x: '%.2f' % x) #取消科学计数法

数据检验的针对功能

在这里插入图片描述

一、卡方检验(离散+离散)

定义: 卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,如果卡方值越大,二者偏差程度越大;反之,二者偏差越小;若两个值完全相等时,卡方值就为0,表明理论值完全符合。
详细说明:
https://www.jianshu.com/p/807b2c2bfd9b
https://blog.csdn.net/qq_38214903/article/details/82967812
在这里插入图片描述
其中,Ai为i水平的观察频数,Ei为i水平的期望频数,n为总频数,pi为i水平的期望频率。i水平的期望频数Ei等于总频数n×i水平的期望概率pi,k为单元格数。当n比较大时,χ2统计量近似服从k-1(计算Ei时用到的参数个数)个自由度的卡方分布。

例: “借款人年龄”(分箱后)与“预测是否会出现财务危机”之间的关系(选取30到80岁)
假设:年龄和财务危机没有关系

from scipy.stats import chi2_contingency

train_data = pd.read_csv('cs-training.csv')
age_range = list(range(30,81,10))
train_data = train_data[(train_data['age']>=30) & (train_data['age']<=80)]
# train_data['age'].value_counts()
train_data['age_cut1'] = pd.cut(train_data['age'], age_range, include_lowest=True, right=False)
age_cut_pivot = train_data.pivot_table(index='age_cut1', columns='SeriousDlqin2yrs', values='CustomerID', aggfunc='count')
age_cut_pivot

在这里插入图片描述

aa = age_cut_pivot.as_matrix() #将dataframe转成ndarray
kf = chi2_contingency(aa)
print('chisq-statistic=%.4f, p-value=%.4f, df=%i expected_frep=%s'%kf) 

在这里插入图片描述
第一个是卡方值,第二个是P值,第三个是自由度,第四个是与原数据数组同维度的对应理论值
说明: P值是0<0.05,故拒绝原假设,也就是年龄和财务危机存在关系的

二、ANOVA检验(离散+连续)

定义: 方差分析(Analysis of Variance,简称ANOVA),又称“变异数分析”,是R.A.Fisher发明的,用于两个及两个以上样本均数差别的显著性检验。 由于各种因素的影响,研究所得的数据呈现波动状。造成波动的原因可分成两类,一是不可控的随机因素,另一是研究中施加的对结果形成影响的可控因素。
详细说明:
https://www.jianshu.com/p/59cf0337c4d9
https://www.jianshu.com/p/41ac20a83198
https://zhuanlan.zhihu.com/p/57896471
在这里插入图片描述
例:同1,但不对年龄分箱

import statsmodels.stats.anova as anova
from statsmodels.formula.api import ols

print(anova.anova_lm(ols('{}~SeriousDlqin2yrs'.format('age'),train_data).fit()))

在这里插入图片描述

三、相关系数

定义: 相关关系是一种非确定性的关系,相关系数是研究变量之间线性相关程度的量。我这里用的是皮尔森相关系数。
详细说明:
https://blog.csdn.net/zzh1301051836/article/details/82217676
https://www.cnblogs.com/chulin/p/9927591.html
https://blog.csdn.net/Zhangjunjie789/article/details/51737366
在这里插入图片描述
例:各特征值之间的相关系数

train_data[['RevolvingUtilizationOfUnsecuredLines', 'age', 'NumberOfTime30-59DaysPastDueNotWorse', 'DebtRatio', 'MonthlyIncome',
           'NumberOfOpenCreditLinesAndLoans', 'NumberOfTimes90DaysLate', 'NumberRealEstateLoansOrLines', 'NumberOfTime60-89DaysPastDueNotWorse',
           'NumberOfDependents']].corr() #默认用的是皮尔森相关系数

在这里插入图片描述

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值