Python自动绘制散点图并进行线性回归

该代码示例定义了一个`linear_regression`函数,它结合了散点图的绘制和线性回归分析。利用`plotnine`库创建散点图,使用`statsmodels`进行线性回归建模,并打印模型摘要。数据集包含两列连续变量`RBC`和`Hb`,调用函数后,结果显示高R-squared值,表明自变量`RBC`能很好地解释因变量`Hb`的变化。
摘要由CSDN通过智能技术生成

将散点图、线性回归打包成一个函数:

from plotnine import *
import statsmodels.formula.api as smf

def linear_regression(y,x,df): # y和x均为连续变量:y为因变量而x为自变量
    """散点图"""
    print(ggplot(df,aes(y=y, x=x))  
              +geom_point(size=3))
    """线性回归""" 
    model = smf.ols(formula = f"{y}~{x}",         
                    data = df).fit()
    print(model.summary()) # R-squared=0.05说明自变量仅能解释5%的因变量变异

以上函数linear_regression(y,x,df)单独放在linear_regression.py文件中,参考http://t.csdn.cn/ovlRZ

即可实现统计自动化。

 准备数据:

import pandas as pd

df = pd.DataFrame()
df['RBC'] = [5, 2, 8, 9, 10]
df['Hb'] = [15, 22, 7, 8, 5]

df

数据有两列(即两个连续变量,分别为“RBC”、“Hb”),如下

   RBC  Hb
0    5  15
1    2  22
2    8   7
3    9   8
4   10   5

调用linear_regression(y,x,df)即可自动绘制散点图,并进行线性回归:

linear_regression(y='Hb',x='RBC',df=df)

结果如下:

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                     Hb   R-squared:                       0.973
Model:                            OLS   Adj. R-squared:                  0.963
Method:                 Least Squares   F-statistic:                     106.2
Date:                Sun, 18 Jun 2023   Prob (F-statistic):            0.00195
Time:                        16:27:09   Log-Likelihood:                -7.2944
No. Observations:                   5   AIC:                             18.59
Df Residuals:                       3   BIC:                             17.81
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept     25.7944      1.520     16.966      0.000      20.956      30.633
RBC           -2.1168      0.205    -10.307      0.002      -2.770      -1.463
==============================================================================
Omnibus:                          nan   Durbin-Watson:                   2.992
Prob(Omnibus):                    nan   Jarque-Bera (JB):                0.547
Skew:                          -0.766   Prob(JB):                        0.761
Kurtosis:                       2.475   Cond. No.                         19.0
==============================================================================

线性回归方程为Hb=-2.1168*RBC+25.7944,其中-2.1168是系数,+25.7944是截距。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值