《数据分析从入门到进阶》第一章笔记
t检验
也称为均值检验,验证样本的均值是否满足某个常熟或者两样本之间的均值是否满足差异。
1)提出原假设与备择假设 H0:样本均值为5000毫安(原假设);H1:样本均值不为5000毫安
2)分析概率值 pvalue大于0.05的阈值不能拒绝原假设,即认为样本均值为5000毫安的说法正确
from scipy import stats
volumns=[4988,5006,5021,4923,4947,4896,5104,4992,5070,5009,4892,4997]
print(stats.ttest_1samp(a=volumns,popmean=5000))
#Ttest_1sampResult(statistic统计量=-0.6941390148304715, pvalue概率值=0.5019915686890506)
卡方检验与pearson相关性检验
卡方检验用于验证两个离散相变量之间的独立性
1)提出原假设与备择假设 H0:学生的性别与其是否被录取相互独立;H1:~不相互独立
2)分析 p值小于0.05的阈值,应该拒绝原假设,即认为性别与其是否被录取是相关的
from scipy import stats
import pandas as pd
# 数据格式:一列Gender男/女;一列Offer是/否
students=pd.read_excel(r'D:\Projects\Python\Doing\pythonProject\data\卡方检验与Persion检验.xlsx')
# 构造两个离散型变量之间的频次统计表或列联表
crosstable=pd.crosstab(students.Gender,students.Offer)
# print(crosstable)
# Offer 否 是
# Gender
# 女 22 11
# 男 5 12
# 卡方检验
print(stats.chi2_contingency(crosstable))
#(统计量 4.859047996302897,p值 0.02750150730030855, 1, array([[17.82, 15.18], [ 9.18, 7.82]]))
pearson相关性检验用于验证两个数值型变量之间的独立性
1)提出原假设与备择假设 H0:汽车速度与刹车距离不相关;H1:~相关
2)分析 pearson相关系数说明两者存在很强的相关性,为了验证这个结论,看p值 p值远小于0.05的阈值,应该拒绝原假设,即认为汽车速度与刹车距离的强相关性是正确的
from scipy import stats
import pandas as pd
# 数据格式:一列speed(int);一列dist(int)
cars=pd.read_excel(r'D:\Projects\Python\Doing\pythonProject\data\卡方检验与Persion检验.xlsx',sheet_name=1)
print(cars)
# pearson相关性检验
print(stats.pearsonr(cars.speed,cars.dist))
#(pearson相关系数 0.8068949006892105,概率值 1.4898364962950763e-12)
Shapiro正态性检验
通常要求样本数量在5000以内,如果样本量在5000以上,可以使用KS验证方法
1)提出原假设与备择假设 H0:乘客的年龄服从正态分布;H1:~不服从
2)p值远小于0.05的阈值,应该拒绝原假设,即认为客的年龄不服从正态分布
from scipy import stats
import pandas as pd
titanic=pd.read_csv(r'D:\Projects\Python\Doing\pythonProject\data\Titanic.csv')
# 数据格式中含age为NaN的情况
print(titanic.Age)
# 剔除年龄中的缺失值,再作Shapiro检验
print(stats.shapiro(titanic.Age[~titanic.Age.isnull()]))
# ShapiroResult(statistic=0.9814548492431641, pvalue=7.322165629375377e-08)
(预测分析法)线性回归模型
假设不考虑模型的显著性和回归系数的显著性,那么得到的回归模型可以表示为Profit=50120+0.81RD_RD_Spend-0.03Administration+0.03Marketing_Spend
所以当已知三个因素的具体值时,就可以将它们的值导入线性回归模型的方程式中,求得可能的商品利润。
import pandas as pd
import statsmodels.formula.api as smf
profit=pd.read_csv(r'D:\Projects\Python\Doing\pythonProject\data\Profit.csv')
# 创建多元线性回归模型,lm是拟合结果
lm=smf.ols('Profit~RD_Spend+Administration+Marketing_Spend',data=profit).fit()
# 返回回归拟合的概览
# print(lm.summary())
'''
OLS Regression Results(最小二乘法回归)
==============================================================================
Dep. Variable: Profit R-squared: 0.951
Model: OLS Adj. R-squared: 0.948
Method: Least Squares F-statistic: 296.0
Date: Mon, 27 Sep 2021 Prob (F-statistic): 4.53e-30
Time: 18:49:50 Log-Likelihood: -525.39
No. Observations: 50 AIC: 1059.
Df Residuals: 46 BIC: 1066.
Df Model: 3
Covariance Type: nonrobust
===================================================================================
coef std err t P>|t| [0.025 0.975]
-----------------------------------------------------------------------------------
Intercept 5.012e+04 6572.353 7.626 0.000 3.69e+04 6.34e+04
RD_Spend 0.8057 0.045 17.846 0.000 0.715 0.897
Administration -0.0268 0.051 -0.526 0.602 -0.130 0.076
Marketing_Spend 0.0272 0.016 1.655 0.105 -0.006 0.060
==============================================================================
Omnibus: 14.838 Durbin-Watson: 1.282
Prob(Omnibus): 0.001 Jarque-Bera (JB): 21.442
Skew: -0.949 Prob(JB): 2.21e-05
Kurtosis: 5.586 Cond. No. 1.40e+06
==============================================================================
'''
# 调取计算出的回归系数,也就是coef列
print(lm.params)
'''
Intercept 50122.192990
RD_Spend 0.805715
Administration -0.026816
Marketing_Spend 0.027228
dtype: float64
'''