精华内容
下载资源
问答
  • 2021-01-04 20:21:06

    python做logistic回归分析,我觉的使用statsmodel库比较好,结果输出比较整齐。很类似传统的统计软件。

    比如使用 kaggel 的heart数据集。

    地址在:https://www.kaggle.com/zhaoyingzhu/heartcsv

     

    
    ###############################################################
    import pandas as pd
    import statsmodels.api as sm
    
    df = pd.read_csv("binary.csv")
    df.head()
    df
    # 重命名 ranks 列,
    df.columns = ['admit', 'gre', 'gpa', 'prestige']
    df
    
    pd.crosstab( df['prestige'],df['admit'])
    
    df.hist()
    
    # 这里产生了一个虚拟变量数据表。
    dummy_ranks = pd.get_dummies(df['prestige'], prefix='prestige')
    dummy_ranks
    type(dummy_ranks)
    dummy_ranks.shape
    df.shape
    
    clos_to_keep = ['admit', 'gre', 'gpa']
    clos_to_keep
    # 这里,需要保留3个虚拟变量。n个虚拟的,纳入回归就纳入n-1,否则完全共线
    data = df[clos_to_keep].join(dummy_ranks.loc[:, 'prestige_2':])
    data
    
    #产生一个截距项。
    data['intercept'] = 1.0
    data
    # 从第二列开始,数据中的列是自变量,第一列是y
    train_cols = data.columns[1:]
    train_cols
    # 这里使用、logit函数,更简单一点
    logit = sm.Logit(data['admit'], data[train_cols])
    result = logit.fit()
    result.summary()
    
    # 当然也可以使用广义线性模型,这有点类似于R的一些语法
    model = sm.GLM.from_formula('admit~gre + gpa +prestige_2 +prestige_3 +prestige_4 ',
                                family = sm.families.Binomial(), data = data)
    
    m1 = model.fit()
    m1.summary()
    # 两种方法,结果相同
    
    ##################################
    ############ 添加截距项,也可以使用 sm的add——constant功能
    ##################################
    df = pd.read_csv("binary.csv")
    
    df.head()
    df.keys()
    df.columns = ['admit', 'gre', 'gpa', 'prestige']
    
    df.head()
    
    data_dummy = pd.get_dummies(df['prestige'], prefix="prestige")
    
    data_dummy
    
    df_new = df.iloc[:, :-1].join(data_dummy.iloc[:, 1:])
    
    df_new
    
    independent = sm.add_constant(df_new.iloc[:, 1:])
    independent
    dependent = df_new.iloc[:, 0]
    dependent
    
    model = sm.Logit(dependent, independent).fit()
    model.summary()
    
    # 结果也是一样的。
    

     

    更多相关内容
  • 应用Stata做logistic回归

    2020-10-20 10:31:33
    复旦大学经管——应用Stata做logistic回归,多个教学案例、详细的指导方法
  • 用Python做Logistic回归

    千次阅读 2021-01-29 08:55:42
    为什么写这篇文章本人初学python,碰巧的东西需要用一下Logistic回归,自觉这个很基础的东西应该已经有很多比较好的实现了,于是我就很自觉地问了下度娘。结果大囧==..出来的相关结果少得可怜,只有一个实现好的...

    为什么写这篇文章

    本人初学python,碰巧做的东西需要用一下Logistic回归,自觉这个很基础的东西应该已经有很多比较好的实现了,于是我就很自觉地问了下度娘。结果大囧==..出来的相关结果少得可怜,只有一个实现好的代码,但是看了下实现的比较粗糙,梯度下降部分用的是固定步长..于是抱着死马当活马医心态google了一下,结果发现有不少成熟的统计和科学计算的包里面已经实现好了,比如statsmodels,于是本文就讲一下怎么用statsmodels做Logistic回归好啦~

    吐槽下..学术上的事果然还是国外比国内靠谱得多..

    什么是Logistic回归

    用处

    Logistic回归主要用于分类,即给定一个用数值表示的特征向量X(粗体表示向量),求出这个向量所属的类别Y

    当然,可以用来分类的算法很多,比如SVM,神经网络等。但是这些算法都比较复杂,要掌握其细节有些难度。Logistic回归虽然简单,但是在很多情况下也能得到很好的效果

    函数形式及学习参数的算法

    Logistic回归的函数属于sigmoid函数,就相当于把sigmoid的自变量替换成多元线性回归的自变量部分(等号右边)即可

    学习自变量X的参数θ的方法是梯度下降法(GradientDescent),核心思想就是根据原函数的特性,构造出一个准则函数J(θ),这个准则函数的特性是J(θ)的值越小,原函数的拟合程度就越好。然后随机对θ赋初值,每一次迭代计算出J(θ)的梯度▽J(θ),我们知道函数的梯度是函数值上升最快的方向,所以这里取梯度的负方向-▽J(θ),再乘以一个步长η(k),就可以得到每次迭代后更新的参数θ=θ-η(k)▽J(θ)。其中k是当前迭代次数,这里取步长η(k)稍微有点复杂,初学时可以简单地取一个定值。

    这里写的比较简略,具体可以参考这个博文,如果还不太明白请百度Logistic回归或梯度下降吧~

    用statsmodels做Logistic回归

    statsmodels是python的一个做统计建模,计量经济学分析的扩展包,输出的结果真心相当舒服,跟各大统计软件的结果输出很像,比如拟合出来Logistic回归模型后:

    printresult.summary(),可以得到如下结果

    Logit Regression Results

    ==============================================================================

    Dep. Variable:                  admit   No. Observations:                  400

    Model:                          Logit   Df Residuals:                      394

    Method:                           MLE   Df Model:                            5

    Date:                Sun, 03 Mar 2013   Pseudo R-squ.:                 0.08292

    Time:                        12:34:59   Log-Likelihood:                -229.26

    converged:                       True   LL-Null:                       -249.99

    LLR p-value:                7.578e-08

    ==============================================================================

    coef    std err          z     P>|z|      [95.0% Conf.Int.]

    ------------------------------------------------------------------------------

    gre            0.0023      0.001     2.070      0.038         0.000     0.004

    gpa            0.8040      0.332     2.423      0.015         0.154     1.454

    prestige_2    -0.6754     0.316     -2.134      0.033        -1.296    -0.055

    prestige_3    -1.3402     0.345     -3.881      0.000        -2.017    -0.663

    prestige_4    -1.5515     0.418     -3.713      0.000        -2.370    -0.733

    intercept     -3.9900      1.140    -3.500      0.000        -6.224    -1.756

    ==============================================================================

    预测的话:

    combos['admit_pred']=result.predict(combos[train_cols])

    print combos.head()

    #    gre       gpa prestige  intercept  prestige_2 prestige_3  prestige_4  admit_pred

    # 0  220  2.260000         1          1           0           0           0   0.157801

    # 1  220  2.260000         2          1           1           0           0   0.087056

    # 2  220  2.260000         3          1           0           1           0   0.046758

    # 3  220  2.260000         4          1           0           0           1   0.038194

    # 4  220  2.453333         1          1           0           0           0   0.179574

    是不是很舒服呢?

    具体用法参考这篇博文吧,虽然是英文的,不过写的确实很好,直接看代码的话也能看懂~

    如果那篇博文打不开的话,试试国内转载的吧,就是排版没有原版的舒服

    另外,如果不想安装那篇博文提到的Enthought Free Distribution的话,可以参考我的一篇博文来安装对应的扩展包,如果不需要画图的话,可以不装matplotlib。另外,statsmodels还需要安装patsy

    展开全文
  • 在这里讲述如何通过MATLAB的代码实现多元logistic回归模型,对于想用MATLAB来实现多元logistic回归模型的朋友有很大的帮助。
  • logistic回归数据集

    2019-03-29 23:18:05
    logistic回归数据集logistic回归数据集logistic回归数据集
  • 如何用GraphPad Prism9做logistic回归

    千次阅读 2020-11-29 03:40:02
    先来看看数据,很明显,第一列为因变量,其余为自变量...之后,按照下图进行操作,选择new analysis——multiple variable analysis——multiple logistic regression——OK 文章剩余内容<<<<< ...

    先来看看数据,很明显,第一列为因变量,其余为自变量,其中age为定量变量,sex为二分类,ticket class为多分类。

    下载.jpeg

    之后,按照下图进行操作,选择new analysis——multiple variable analysis——multiple logistic regression——OK

     

    文章剩余内容<<<<<

     

    展开全文
  • 应用Stata做logistic回归PPT课件.pptx
  • Stata做logistic回归PPT学习教案.pptx
  • 应用Stata做logistic回归PPT学习教案.pptx
  • R中做logistic回归,多分类自变量赋值哑变量后,如何得到变量整体的P值?
  • 结合实际情况,可以将Logistic回归分析分为3类,分别是二元Logistic回归分析、多元有序Logistic回归分析和多元无序Logistic回归分析,如下图。Logistic回归分析用于研究X对Y的影响,并且对X的数据类型没有要求,X...

    633f7394e8dcf2cd5518b3dcc805a730.png

    在研究X对于Y的影响时,如果Y为定量数据,那么使用多元线性回归分析(SPSSAU通用方法里面的线性回归);如果Y为定类数据,那么使用Logistic回归分析。

    结合实际情况,可以将Logistic回归分析分为3类,分别是二元Logistic回归分析、多元有序Logistic回归分析和多元无序Logistic回归分析,如下图。

    214bfceeb03053a8a7ae147d2c1005d9.png

    Logistic回归分析用于研究X对Y的影响,并且对X的数据类型没有要求,X可以为定类数据,也可以为定量数据,但要求Y必须为定类数据,并且根据Y的选项数,使用相应的数据分析方法。

    本次内容将针对二元logistic(logit)回归进行说明,后续两篇文章将分别讲解有序logistic(logit)和多分类logistic(logit)回归。

    1、二元logistic分析思路说明

    在进行二元Logistic回归分析时,通常会涉及3个步骤,分别是数据处理、卡方分析和影响关系研究,如下图。

    d71835df14d0c897a637a3589c999584.png

    1.1 第一步为数据处理

    例如,在研究相关因素对样本将来是否愿意购买理财产品的影响情况时,性别,专业等均为影响因素,而且明显的,性别和专业属于定类数据,因此需要进行虚拟哑变量设置,可使用【数据处理->生成变量】完成。

    除此之外,二元logistic回归要求因变量只能为2项,而且数字一定是0和1,数字1表示YES,愿意,购买,患病等,数字0表示no,不愿意,不购买,不患病等。如果不是这样,那么就需要针对因变量Y进行数据编码,使用【数据处理->数据编码】即可完成。

    1.2 第二步为卡方分析或方差分析

    此步不是必需的步骤,通过此步可以试探性了解每个影响因素X与Y之间的影响关系情况,研究影响关系前,首先需要自变量X与Y之间有着差异关系,才可能进一步有着影响关系,也或者说差异关系是一种基础性关系,影响关系是更进一步的深层次关系。所以在进行二元logistic回归分析前,可先对X做差异分析,筛选出与Y有着差异性的X。

    如果X是定类数据,那么就使用卡方分析去分析差异;如果说X是定量数据,那么可使用方差分析去研究X和Y的差异性。

    分析完成X与Y的差异关系之后,筛选出有差异的X,然后再放入模型中,进行二元logistic回归;这样做的目的有两个,一是简化模型,越简单的模型越容易拟合且效果越好;二是做到心里有数,提前了解到数据之间的大致关系情况。

    1.3 第三步为影响关系分析,即二元Logistic回归分析

    在上一步确认了可能的影响因素之后,此步骤直接对题进行二元Logistic回归分析。二元Logistic回归分析时,首先需要看某个题是否呈现出显著性(如果P值小于0.05,则说明呈现出0.05水平的显著性;如果P值小于0.01,则说明呈现出0.01水平的显著性),如果呈现出显著性,那么说明该题对Y有影响关系。具体是正向影响还是负向影响需要结合对应的回归系数值进行说明,如果回归系数值大于0,则说明是正向影响;反之则说明是负向影响。

    除此之外,二元Logistic回归分析会涉及一个术语——对数比(SPSSAU中称其为OR值)。对数比是一个倍数概念指标,该值等于回归系数的指数次方,也称exp(b)值。例如,研究相关因素对样本‘是否购买理财产品’的影响,性别因素呈现出显著性,并且性别以女性为对照项,其对数比(OR值)为1.34,这说明男性样本购买理财产品的可能性是女性样本的1.34倍。

    二元Logistic回归分析模型的拟合情况或模型效果的判断会涉及3个指标,分别是Hosmer和Lemeshow检验、R2值和模型预测准确率表格。Hosmer和Lemeshow检验用于检验事实数据情况与模型拟合结果是否保持一致,如果在进行Hosmer和Lemeshow检验时P值大于0.05,那么说明事实数据情况与模型拟合结果保持一致,即说明模型拟合情况良好。

    R2用于表示模型拟合程度,此值与多元线性回归分析的R2值意义基本一致,此值的取值范围为0~1,值越大意味着相关因素对Y的解释力度越高。SPSSAU提供3个R方值指标,分别是McFadden R 方、Cox & Snell R 方和Nagelkerke R 方。

    除此之外,SPSSAU还会输出模型预测准确率表格,用于分析模型的预测水平情况。比如有多大比例将本身为愿意购买理财产品的样本误判断为不愿意购买理财产品的样本。

    2、如何使用SPSSAU进行二元logistic操作

    在进行二元logistic回归分析时,共分为三个步骤,第1步是数据处理。第二步是进行卡方或者方差分析试控X对于Y的差异,找出有差异关系的X,用于进一步的二元logistic回归分析。

    2.1 数据处理

    如果X是定类数据,比如性别或专业。那么就需要首先对它们做虚拟哑变量处理,使用SPSSAU【数据处理】--【生成变量】。操作如下图:

    990cc99cda21064948d3607840deff11.png

    因变量Y只能包括数字0和1,如果因变量的原始数据不是这样,那么就需要数据编码,设置成0和1,使用SPSSAU数据处理->数据编码功能,操作如下图:

    4b6238a54df73a6b85e662c6f32d68bf.png

    2.2 卡方分析或方差分析

    本例子中想研究性别,专业,年龄,月生活费共4项对于‘是否愿意理财’的影响。性别,专业这两项为定类数据,所以可使用卡方分析它们分别与‘是否愿意理财’的差异关系。而年龄和月生活费可看成定量数据,可使用方差分析(或非参数检验)分析它们分别与‘是否愿意理财’的差异关系情况。

    由于例子里面仅4个X,本身就较少,因此模型本身并不复杂,因此直接忽略此步骤即可,直接进行二元logistic回归分析。

    2.3 二元logistic回归分析

    SPSSAU进行二元logistic回归分两步,分别是在进阶方法里面找到二元logit,第二是拖拽分析项到右我们就是右侧框后开始分析,如下所示:

    899a576d8304de35e03ba79ed69cfa9f.png

    cddc7d7578ef8dba2db5b1c0747f9497.png

    性别和专业均为定类数据,所以进行了虚拟哑变量设置。

    而且性别分为男和女,以女作为参照项,因此框中仅放入‘男’即可;

    专业分为理工类,文科类,艺术类和,体育类;以体育类作为参照项,因此框中会少放体育类,放入另外3项即理工类,文科类和艺术类即可。

    虚拟哑变量在进行影响关系研究时,一定需要有1个参照项,至于具体是哪一项,由研究者自行决定即可,无固定要求,一般是第1个或者最后1个,或者研究者希望设置作为参考项的。

    完成后,SPSSAU会得到一系列的表格和智能分析,包括模型基本汇总表格,模型似然比检验表格,模型参数拟合表格,模型预测准确率表格,Hosmer-Lemeshow拟合度检验等。如下:

    dd67d9a5ab53dae14d48dd4cd055d3bb.png

    二元logit回归分析基本汇总

    5d45a5f4dd910018a28304d2321dd4ff.png

    二元logit回归模型似然比检验结果

    b037e0909dd33c15daf1b76dc52ac20b.png

    二元logit回归结果分析

    d72d9bdb90ae83e59b997e1648b36848.png

    二元logit回归预测准确率表格

    e22b8fc824ea3ed8a8a3f3bdbb9850c9.png

    Hosmer-Lemeshow拟合度检验 

    3、二元logistic相关问题

    在使用SPSSSAU进行二元logistic回归时,可能会出现一些问题,比如提示奇异矩阵,质量异常,Y值只能为0或1等,接下来一一说明。

    6ebf1701cff86e618eeb557a0f324b87.png

    第1点:出现奇异矩阵或质量异常

    如果做二元logistic提示奇异矩阵,通常有两个原因,一是虚拟哑变量设置后,本应该少放1项作为参考项但是并没有,而是把所有的哑变量项都放入框中,这会导致绝对的共线性问题即会出现奇异矩阵矩阵。二是X之间有着太强的共线性(可使用通用方法的线性回归查看下VIF值),此时也可能导致模型无法拟合等。先找出原因,然后把有问题的项移出模型中即可。

    同时,如果自变量X的分布极其不均匀,SPSSAU建议可先对类别进行组合,可使用数据处理里面的数据编码完成。

    第2点:Y值只能为0或1

    二元logistic回归研究X对Y的影响,Y为两个类别,比如是否愿意,是否喜欢,是否患病等,数字一定有且仅为2个,分别是0和1。如果不是这样就会出现此类提示,可使用SPSSAU频数分析进行检查,并且使用数据处理->数据编码功能进行处理成0和1。

    第3点:OR值的意义

    OR值=exp(b)值,即回归系数的指数次方,该值在医学研究里面使用较多,实际意义是X增加1个单位时,Y的增加幅度。如果仅仅是研究影响关系,该值意义较小。

    第4点: wald值或z值

    z 值=回归系数/标准误,该值为中间过程值无意义,只需要看p 值即可。有的软件会提供wald值(但不提供z 值,该值也无实际意义),wald值= z 值的平方。

    第5点: McFadden R 方、Cox & Snell R 方和Nagelkerke R 方相关问题?

    Logit回归时会提供此3个R 方值(分别是McFadden R 方、Cox & Snell R 方和Nagelkerke R 方),此3个R 方均为伪R 方值,其值越大越好,但其无法非常有效的表达模型的拟合程度,意义相对交小,而且多数情况此3个指标值均会特别小,研究人员不用过分关注于此3个指标值。一般报告其中任意一个R方值指标即可。

    展开全文
  • logistic回归分析matlab代码逻辑回归-机器学习 客观的开发机器学习算法,无需使用Octave或Matlab即可在python中进行逻辑回归。 Logistic回归是一种估计事件发生概率的回归类型。 例如,电子邮件是否为垃圾邮件,情绪...
  • logistic回归,回归分析,logistic回归分类器,鸢尾花数据集
  • Logistic回归算法

    2018-11-28 18:32:40
    资源包含Logistic回归算法,以及一个应用实例:预测病马死亡率。可直接执行。
  • Logistic回归

    2018-06-08 16:28:07
    logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘。
  • logistic回归

    2018-05-27 00:04:51
    logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。以胃癌病情分析为例,选择...
  • Python实现Logistic回归

    2017-05-19 11:41:19
    Python实现Logistic回归,《机器学习实战》中第五讲源码,包含测试数据
  • 使用 python 实现 Logistic 回归

    千次阅读 多人点赞 2021-04-04 17:55:46
    使用 python 实现 Logistic 回归原理回顾预测函数代价函数参数更新代码分析算法的实现算法的使用算法的对比全部代码 这节课我们将使用 numpy 实现逻辑回归算法,然后利用我们自己写的算法在乳腺癌数据集上进行癌症...
  • logistic回归分析及SAS实现医学研究中的logistic回归分析及SAS实现
  • Logistic回归——二分类 —— matlab

    千次阅读 2022-03-16 09:53:08
    简介 Logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘 ,Logistic回归虽说是回归,但实际更属于判别分析。 2.应用范围 ① 适用于流行病学资料的危险因素分析 ② 实验室中药物的...
  • 本文实例讲述了Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据。分享给大家供大家参考,具体如下: 一、Logistic回归模型:   二、Logistic回归建模步骤 1.根据分析目的设置指标变量(因变量和自变量...
  • matlab实现logistic回归

    千次阅读 2021-04-25 01:53:30
    Logistic回归是一个线性概率分类器。通过加权矩阵W和偏置向量b实现了参数化。通过将数据点投影到超平面集上来实现分类,其中距离反映数据点的归属概率。其中会用到一个非常重要函数,能够将数据投影,利用数学语言...
  • 利用SPSS进行Logistic回归分析

    千次阅读 2020-12-28 23:22:06
    第8章 利用SPSS进行Logistic回归分析现实中的很多现象可以划分为两种可能,或者归结为两种状态,这两种状态分别用0和1表示。如果我们采用多个因素对0-1表示的某种现象进行因果关系解释,就可能应用到logistic回归。...
  • SPSS-logistic回归

    2022-01-02 16:44:53
    利用spss进性逻辑回归
  • java实现logistic回归算法 java实现logistic回归算法 java实现logistic回归算法
  • logistic回归二分类

    2018-10-31 12:12:43
    吴恩达网易云公开课《深度学习》week2--logistic回归数据集及代码实现
  • matlab下的logistic回归分析

    千次阅读 2021-07-21 19:59:33
    Logistic回归 logistic回归主要用来预测离散因变量(分类因变量)与一组解释变量(自变量)之间的关系。最常用的是二分类logistic,即因变量的取值只包含两个类别,例如:“好”和“坏” ;“发生”和“不发生”。...
  • logistic回归的损失函数和极大似然估计的关系 记 Φ(x)=11+e−θx \Phi(x)=\frac{1}{1+e^-{\theta x}} Φ(x)=1+e−θx1​ 我们可以把这个sigmoid函数的值看做y等于1的后验估计概率,也就是: p(y=1∣x)=Φ(x) p(y=1|...
  • 采用Minitab进行logistic回归分析

    千次阅读 2020-04-07 09:41:52
    在研究Y与X之间的因果关系时,如果Y不是一个定比或定距变量时,就需要进行logistic回归logistic回归是一种广义线性回归(generalized linear model)。logistic回归根据Y的取值分为三类: logistic回归分析...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,833
精华内容 25,533
关键字:

如何做logistic回归