具有推理测试、残差分析、离群值可视化、多重共线性测试和其他特征的线性回归实用程序

mlr的Python项目详细描述


最大似然比(pip install mlr

top

一个轻量级的、易于使用的python包,它结合了类似scikit-learn的简单api和统计推断测试可视化残差分析异常可视化多重共线性测试的功能,可以在类似statsmodels和r语言的包中找到。

tirthajyoti-sarkar博士编写和维护(WebsiteLinkedIn profile

有用的回归指标,

  • MSE、SSE、SST
  • r^2,调整r^2
  • aic(akaike信息准则)和bic(bayesian信息准则)

推论统计,

  • 标准错误
  • 置信区间
  • p值
  • t-测试值
  • F-统计量

视觉残留分析,

  • 拟合与特征图,
  • 拟合与残差图,
  • 标准化残差直方图
  • 标准残差q-q图

异常值检测

  • 影响图
  • 库克距离图

多重共线性

  • 成对批次
  • 方差拐点因子(vif)
  • 协方差矩阵
  • 相关矩阵
  • 相关矩阵热图

要求

  • 纽米(pip install numpy
  • 熊猫(pip install pandas
  • matplotlib(pip install matplotlib
  • 肖伯恩(pip install seaborn
  • scipy(pip install scipy
  • statsmodels(pip install statsmodels

安装

(在Linux和Windows上)您可以使用pip

pip install mlr

(在Mac OS上),首先安装PIP,

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

然后按上述步骤进行。


快速启动

导入MyLinearRegression类,

from MLR import MyLinearRegression as mlr
import numpy as np

生成一些随机数据

num_samples=40
num_dim = 5
X = 10*np.random.random(size=(num_samples,num_dim))
coeff = np.array([2,-3.5,1.2,4.1,-2.5])
y = np.dot(coeff,X.T)+10*np.random.randn(num_samples)

创建一个模型实例,

model = mlr()

接收数据

model.ingest_data(X,y)

适合,

model.fit()

直接从pandas数据框中读取

您可以直接从pandas数据框中读取。只需将features/predictor的列名作为列表,将目标列名作为字符串赋给fit_dataframe方法。

目前,只支持数字特性/目标,但在将来的版本中,我们也将支持分类变量。

<... obtain a Pandas DataFrame by some processing>
df = pd.DataFrame(...)
feature_cols = ['X1','X2','X3']
target_col = 'output'

model = mlr()
model.fit_dataframe(X=feature_cols,y = target_col,dataframe=df)

指标

到目前为止,它看起来与scikit learn的线性回归估计相似,不是吗?
区别就在这里,

逐一打印各种回归模型度量,

print ("R-squared: ",model.r_squared())
print ("Adjusted R-squared: ",model.adj_r_squared())
print("MSE: ",model.mse())

>> R-squared:  0.8344327025902752
   Adjusted R-squared:  0.8100845706182569
   MSE:  72.2107655649954

或者,立即打印所有指标!

model.print_metrics()

>> sse:     2888.4306
   sst:     17445.6591
   mse:     72.2108
   r^2:     0.8344
   adj_r^2: 0.8101
   AIC:     296.6986
   BIC:     306.8319

相关矩阵,热图,协方差

我们可以在接收数据后立即建立相关矩阵。该矩阵给出了特征/预测因子之间的多重共线性程度。

相关矩阵

model.ingest_data(X,y)
model.corrcoef()

>> array([[ 1.        ,  0.18424447, -0.00207883,  0.144186  ,  0.08678109],
       [ 0.18424447,  1.        , -0.08098705, -0.05782733,  0.19119872],
       [-0.00207883, -0.08098705,  1.        ,  0.03602977, -0.17560097],
       [ 0.144186  , -0.05782733,  0.03602977,  1.        ,  0.05216212],
       [ 0.08678109,  0.19119872, -0.17560097,  0.05216212,  1.        ]])

协方差

model.covar()

>> array([[10.28752086,  1.51237819, -0.01770701,  1.47414685,  0.79121778],
       [ 1.51237819,  6.54969628, -0.5504233 , -0.47174359,  1.39094876],
       [-0.01770701, -0.5504233 ,  7.05247111,  0.30499622, -1.32560195],
       [ 1.47414685, -0.47174359,  0.30499622, 10.16072256,  0.47264283],
       [ 0.79121778,  1.39094876, -1.32560195,  0.47264283,  8.08036806]])

相关热图

model.corrplot(cmap='inferno',annot=True)

corrplot

统计推断

进行总体显著性

的f检验

它重新解释了检验的f统计量和p值。

如果p值是一个小数值,你可以拒绝所有回归系数都为零的零假设。这意味着一个很小的p值(通常为-lt;0.01)表明总体回归具有统计学意义。

model.ftest()

>> (34.270912591948814, 2.3986657277649282e-12)

p值、t检验统计量和系数的标准误差如何?

标准误差和相应的t检验给出了每个回归系数的p值,它告诉我们特定系数是否具有统计显著性(基于给定的数据)。

print("P-values:",model.pvalues())
print("t-test values:",model.tvalues())
print("Standard errors:",model.std_err())

>> P-values: [8.33674608e-01 3.27039586e-03 3.80572234e-05 2.59322037e-01 9.95094748e-11 2.82226752e-06]
   t-test values: [ 0.21161008  3.1641696  -4.73263963  1.14716519  9.18010412 -5.60342256]
   Standard errors: [5.69360847 0.47462621 0.59980706 0.56580141 0.47081187 0.5381103 ]

置信区间

model.conf_int()

>> array([[-10.36597959,  12.77562953],
       [  0.53724132,   2.46635435],
       [ -4.05762528,  -1.61971606],
       [ -0.50077913,   1.79891449],
       [  3.36529718,   5.27890687],
       [ -4.10883113,  -1.92168771]])

残差的可视化分析

残差分析是检验线性回归模型假设的关键。mlr通过为残差提供直观的分析方法,帮助您轻松检查这些假设。

拟合与残差图

使用此图检查恒定方差和不相关特征(独立性)的假设

model.fitted_vs_residual()

fit_vs_resid

拟合vs特征图

用此图检查线性假设

model.fitted_vs_features()

fit_vs_features

标准化残差

的直方图和q-q图

使用这些图检查误差项的正态性假设,

model.histogram_resid()

hist_resid

model.qqplot_resid()

做得更多

用你的回归模型做更多有趣的事情。 更多的功能将在未来的版本中添加!

  • 异常值检测和绘图
  • 多重共线性检查

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java接口中的每个方法都是抽象的,但在抽象类中,我们也只能使用抽象方法   初始化Java中声明的、未初始化的变量会发生什么情况?   java BouncyCastle openPGP将字节[]数组加密为csv文件   在Java中将类A(和所有子类)映射到类B的实例的字典   RSA公钥编码,在Java和Android中,代码相同,结果不同   java在安卓中实现数字检测语音识别   java取消选择复选框   java如何在其他配置中重用Maven配置XML片段   java有没有一种有效的方法来检查HashMap是否包含映射到相同值的键?   spring处理程序调度失败;嵌套的例外是java。lang.NoClassDefFoundError:org/apache/http/client/HttpClient   带有ehcache的java多层缓存   java如何访问chromium(或任何其他浏览器)cookie   java通过将两个集合与spring data mongodb data中的条件合并来获取计数   安卓中R.java的语法错误