精华内容
下载资源
问答
  • 《Python数据科学:技术详解与商业实践》线性回归案例 # 数据说明:本数据是一份汽车贷款数据 # |字段名|中文含义| # |:--:|:--:| # |id|id| # |Acc|是否开卡(1=已开通)| # |avg_exp|月均信用卡支出(元)| # |avg_...

    《Python数据科学:技术详解与商业实践》线性回归案例

    # 数据说明:本数据是一份汽车贷款数据
    
    # |字段名|中文含义|
    # |:--:|:--:|
    # |id|id|
    # |Acc|是否开卡(1=已开通)|
    # |avg_exp|月均信用卡支出(元)|
    # |avg_exp_ln|月均信用卡支出的自然对数|
    # |gender|性别(男=1)|
    # |Age|年龄|
    # |Income|年收入(万元)|
    # |Ownrent|是否自有住房(有=1;无=0)|
    # |Selfempl|是否自谋职业(1=yes, 0=no)|
    # |dist_home_val|所住小区房屋均价(万元)|
    # |dist_avg_income|当地人均收入|
    # |high_avg|高出当地平均收入|
    # |edu_class|教育等级:小学及以下开通=0,中学=1,本科=2,研究生=3|
    
    import matplotlib.pyplot as plt
    import numpy as np
    import  pandas as pd
    import statsmodels.api as sm
    from statsmodels.formula.api import ols
    pd.set_option('display.max_columns',8)
    r = pd.read_csv('数据科学数据\creditcard_exp.csv',skipinitialspace=True)
    #筛选avg_exp非空数据进行建模,空数据进行预测
    exp = r[r['avg_exp'].notnull()].copy().iloc[:,2:].drop('age2',axis=1)
    exp_new=r[r['avg_exp'].isnull()].copy().iloc[:,2:].drop('age2',axis=1)
    exp[['Income','Age','dist_home_val','avg_exp']].corr(method='pearson')#数据相关性分析
    


    由图可以判断得出avg_exp与income有较大的关系,因此采用income对avg_exp进行模型构建

    exp.plot('Income', 'avg_exp', kind='scatter')   #可视化
    plt.show()
    

    在这里插入图片描述

    lms = ols('avg_exp~ Income',data=exp).fit()
    print(lms.params)   #查看回归系数,截距项
    

    这里采用ols返回一个模型(最小二乘法),模型用fit()训练
    在这里插入图片描述

    lms = ols('avg_exp~ Income',data=exp).fit()
    print(lms.params)   #查看回归系数,截距项
    lms.summary()  #查看模型概括
    pd.DataFrame([lms.predict(exp),lms.resid],index=['predict','resid']).T.head() #使用模型对训练集进行预测以及计算残差
    lms.predict(exp_new)    #测试集进行预测
    

    多元线性回归模型的预测

    lm_s = ols('avg_exp ~ Income+dist_home_val+dist_avg_income+Age', data=exp).fit()
    pd.DataFrame([lm_s.predict(exp),lm_s.resid],index=['predict','resid']).T.head()
    lm_s.summary()
    
    

    在这里插入图片描述
    可以看出age,dist_home_val对模型的显著性较低,对于该方程,这里采用向前回归法对方程进行处理

    def forward_select(data, response):
        remaining = set(data.columns)
        remaining.remove(response)
        selected = []
        current_score, best_new_score = float('inf'), float('inf')
        while remaining:
            aic_with_candidates = []
            for candidate in remaining:
                formula = "{} ~ {}".format(
                    response, ' + '.join(selected + [candidate]))
                aic = ols(formula=formula, data=data).fit().aic
                aic_with_candidates.append((aic, candidate))
            aic_with_candidates.sort(reverse=True)
            best_new_score, best_candidate = aic_with_candidates.pop()
            if current_score > best_new_score:
                remaining.remove(best_candidate)
                selected.append(best_candidate)
                current_score = best_new_score
                print('aic is {},continuing!'.format(current_score))
            else:
                print('forward selection over!')
                break
    
        formula = "{} ~ {} ".format(response, ' + '.join(selected))
        print('final formula is {}'.format(formula))
        model = ols(formula=formula, data=data).fit()
        return (model)
    
    data_for_select = exp[['avg_exp', 'Income', 'Age', 'dist_home_val',
                           'dist_avg_income']]
    lm_m = forward_select(data=data_for_select, response='avg_exp')
    print(lm_m.rsquared)
    pd.DataFrame([lm_m.predict(exp),lm_m.resid],index=['predict','resid']).T.head() #使用模型对训练集进行预测以及计算残差
    lm_m.predict(exp_new)
    

    最终删除age,获得模型
    在这里插入图片描述

    展开全文
  • 一、案例介绍 1、目的:利用上市公司当年的公开财务指标预测来年盈利情况最重要的投资人决策依据。 2、数据来源:随机抽取深市和沪市2002和2003年的500个上市公司样本预测来年的净资产收益率。 3、解释变量包括:...

    一、案例介绍

    1、目的:利用上市公司当年的公开财务指标预测来年盈利情况最重要的投资人决策依据。

    2、数据来源:随机抽取深市和沪市2002和2003年的500个上市公司样本预测来年的净资产收益率。

    3、解释变量包括:资产周转率、当年净资产收益率、债务资本比率、市盈率、应收账款/主营业务收入、主营业务利润、存货/资产总计(反映公司存货状况)、对数资产总计(反映公司规模)

    二、描述性分析

    1、各个标量的均值、最小值、中位数、最大数和标准差

    2、变量相关性分析:相关性矩阵

    3、当期净资产收益率和往期净资产收益率的散点图

    三、建立模型:

    1、多元线性回归模型:

    2、模型假设:

    (1)解释变量是非随机的,且各解释变量之间互不相关(多重共线性)

    (2)随机误差项具有零均值、同方差和不序列相关性

    (3)解释变量和随机项不相关

    (4)随机项满足正态分布

    总结即:随机项满足零均值、同方差、不序列相关的正态分布;解释变量和随机项不相关且解释变量之间互不相关

    3、参数估计:

    (1)最小二乘估计量:

    RSS=\sum (y_{i}-\hat{\beta_{0}}-\hat{\beta_{1}}x_{i1}- \hat{\beta_{2}}x_{i2}-...-\hat{\beta_{p}}x_{ip})^2

    (2)方差估计量:

    \hat{\sigma }^2=RSS/(n-p-1)

    (3)拟合优度:

    总平方和:SST=\sum (y_i-\bar{y})^2

    残差平方和:SSe=\sum (y_i-\bar{y})^2

    R-square:R^2=1-\frac{SSE}{SST}

    4、显著性检验:

    (1)F检验

    假设:H_0:\beta_i=0 vs H_1:\beta_i\neq 0

    检验统计量:F=\frac{(SST-SSE)/p)}{SSE/(n-p-1))}\sim F_{p,n-p-1}

    (2)t检验

    假设:H_0:\beta_i=0 vs H_1:\beta_i\neq 0

    检验统计量:T=\frac{\hat{\beta_i}}{\sqrt{\sigma ^2/n}}\sim t_{n-p-1}

    5、模型检验

    (1)异方差性

    (2)正态性检验:

    QQ图:残差的分位数和正态分布的分位数呈线性关系

    Shapiro-Wilk normality test

    Kolmogorov-Smirnov test

    (3)异常值检验:待补充

    Cook距离

    (4)多重共线性检验:

    见五介绍多重共线性

    四、变量选择与预测:

    只有三个变量显著性通过,但是无法排除其他变量是否有预测能力。从而我们通过AIC和BIC准则选择。原理:同时考虑到了模型复杂度和拟合效果。

    AIC=n(log(\frac{RSS}{n})+1+log(2\pi ))+2p

    BIC=n(log(\frac{RSS}{n})+1+log(2\pi))+logn*p

    五、多重共线性问题:

    1、变量相关性对模型造成的影响:

    (1)完全多重共线性会使OLS(普通最小二乘)系数矩阵方程 解不唯一(基本上不存在完全多重共线性,多是不完全多重共线性),不完全多重共线性会使OLS估计量的方差和标准误较大(因为),即使得估计精度很小和置信区间变宽。

    (2)多重共线性由于自变量之间的相关性,从而变量估计系数可能出现完全相反的符号或者难以置信的数值。

    (3)可能出现显著自变量回归系数不显著:因为标准误较大,从而t检验的t值较小,倾向于接受原假设。

    (4)R方值较高,但t值并不都是统计显著的。R²等于回归平方和在总平方和中所占的比率,即回归方程所能解释的因变量变异性的百分比。具体解释见补充资料1:回归拟合增加解释变量为什么增加拟合优度。方差膨胀因子越接近1,多重共线性越严重。这个时候R2越接近1。

    2、多重共线性的诊断方法:

    (1)R2较高但t值统计显著的不多。

    (2)解释变量两两高度相关。

    (3)方差膨胀因子

    3、方差膨胀因子:

    (1)考虑辅助回归:x_i=a+\sum_{j=1}^{n}b_jx_j+e

    (2)R_{i}^{2}是辅助回归的拟合优度

    (3)方差膨胀因子:VIF_i=\frac{1}{1-{R_{i}}^{2}}

    在一定程度上在多大程度上第i个变量所包含的信息被其他变量覆盖。一般认为小于10就没有多重共线性问题。

     

    展开全文
  • Excel—对数回归分析与预测

    千次阅读 2018-06-08 10:12:49
    背景:很多业务并不是线性增长,当增长某一程度时,其增长率会开始减缓1、准备数据 案例中准备数据如下 以excel2013为例选择数据“插入”散点图,见下图选择增加“趋势线”选择对数配置,选择公式显示,便可以看到...

    背景:很多业务并不是线性增长,当增长某一程度时,其增长率会开始减缓

    1、准备数据

        案例中准备数据如下 


    以excel2013为例

    选择数据“插入”散点图,见下图选择

    增加“趋势线”


    选择对数配置,选择公式显示,便可以看到公式
    也可以向前或后预测,图中实例向后预测5期,结果显示如下



    展开全文
  • 逻辑斯蒂回归(logistic regression)是统计学习中的经典分类方法,属于对数线性模型。 logistic分布 ​设X是连续随机变量,X服从logistic分布是指X具有下列分布函数和密度函数:...
    package com.huihex.sparkmllib
    
    import org.apache.spark.mllib.classification.LogisticRegressionWithLBFGS
    import org.apache.spark.mllib.evaluation.MulticlassMetrics
    import org.apache.spark.mllib.linalg.Vectors
    import org.apache.spark.mllib.regression.LabeledPoint
    import org.apache.spark.{SparkConf, SparkContext}
    /**
      * Created by wall-e on 2017/4/1.
      */
    object Logistic_regression {
      /**
        * 逻辑斯蒂回归(logistic regression)是统计学习中的经典分类方法,属于对数线性模型。
        * logistic回归的因变量可以是二分类的,也可以是多分类的。
        * @param args
        */
      def main(args: Array[String]): Unit = {
        val conf = new SparkConf().setAppName("逻辑回归").setMaster("local")
        val sc = new SparkContext(conf)
        //读取数据
        //每行被分成了5部分,前4部分是鸢尾花的4个特征,最后一部分是鸢尾花的分类
        //这里我们用LabeledPoint来存储标签列和特征列
        val data = sc.textFile("data\\iris.txt")
        /*
        LabeledPoint在监督学习中常用来存储标签和特征,其中要求标签的类型是double,特征的类型是Vector。
        这里,先把莺尾花的分类进行变换,"Iris-setosa"对应分类0,"Iris-versicolor"对应分类1,其余对应分类2;
        然后获取莺尾花的4个特征,存储在Vector中。
         */
        val parsedData = data.map { line =>
          val parts = line.split(',')
          LabeledPoint(
            if(parts(4)=="Iris-setosa") 0.toDouble
            else if (parts(4) =="Iris-versicolor") 1.toDouble
            else 2.toDouble,
            Vectors.dense(parts(0).toDouble,parts(1).toDouble,parts(2).toDouble,parts(3).toDouble)
          )
        }
        //打印读取并处理后的数据
        parsedData.foreach { x => println(x) }
    
        /**
          * 首先进行数据集的划分,这里划分60%的训练集和40%的测试集:
          */
        val splits = parsedData.randomSplit(Array(0.6,0.4),seed = 11L)
        val training = splits(0).cache()
        val test = splits(1)
        /**
          * 然后,构建逻辑斯蒂模型,用set的方法设置参数,比如说分类的数目,这里可以实现多分类逻辑斯蒂模型
          */
        val model = new LogisticRegressionWithLBFGS().setNumClasses(3).run(training)
        /**
          * 接下来,调用多分类逻辑斯蒂模型用的predict方法对测试数据进行预测,并把结果保存在MulticlassMetrics中。
          * 这里的模型全名为LogisticRegressionWithLBFGS,加上了LBFGS,表示Limited-memory BFGS。
          * 其中,BFGS是求解非线性优化问题(L(w)​求极大值)的方法,是一种秩-2更新,
          * 以其发明者Broyden, Fletcher, Goldfarb和Shanno的姓氏首字母命名。
          */
        val predictionAndLabels = test.map { case LabeledPoint(label, features) =>
          val prediction = model.predict(features)
          (prediction, label)
        }
        /**
          * 这里,采用了test部分的数据每一行都分为标签label和特征features,
          * 然后利用map方法,对每一行的数据进行model.predict(features)操作,获得预测值。
          * 并把预测值和真正的标签放到predictionAndLabels中。我们可以打印出具体的结果数据来看一下:
          */
        predictionAndLabels.foreach(x =>(println(x)))
        /**
          * 模型评估
          * 模型预测的准确性
          */
        val metrics = new MulticlassMetrics(predictionAndLabels)
        val precision = metrics.precision
        println("Precision = " + precision)
      }
    }
    

    iris数据集下载链接(https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data

    ......
    17/04/06 22:16:29 INFO SparkContext: Created broadcast 1 from broadcast at DAGScheduler.scala:996
    17/04/06 22:16:29 INFO DAGScheduler: Submitting 1 missing tasks from ResultStage 0 (MapPartitionsRDD[2] at map at Logistic_regression.scala:29)
    17/04/06 22:16:29 INFO TaskSchedulerImpl: Adding task set 0.0 with 1 tasks
    17/04/06 22:16:29 INFO TaskSetManager: Starting task 0.0 in stage 0.0 (TID 0, localhost, executor driver, partition 0, PROCESS_LOCAL, 5983 bytes)
    17/04/06 22:16:29 INFO Executor: Running task 0.0 in stage 0.0 (TID 0)
    17/04/06 22:16:29 INFO HadoopRDD: Input split: file:/D:/huihex-spark/data/iris.txt:0+4698
    17/04/06 22:16:29 INFO deprecation: mapred.tip.id is deprecated. Instead, use mapreduce.task.id
    17/04/06 22:16:29 INFO deprecation: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
    17/04/06 22:16:29 INFO deprecation: mapred.task.is.map is deprecated. Instead, use mapreduce.task.ismap
    17/04/06 22:16:29 INFO deprecation: mapred.task.partition is deprecated. Instead, use mapreduce.task.partition
    17/04/06 22:16:29 INFO deprecation: mapred.job.id is deprecated. Instead, use mapreduce.job.id
    (0.0,[5.1,3.5,1.4,0.2])
    (0.0,[4.9,3.0,1.4,0.2])
    (0.0,[4.7,3.2,1.3,0.2])
    (0.0,[4.6,3.1,1.5,0.2])
    ......
    (1.0,1.0)
    (1.0,1.0)
    (1.0,1.0)
    (1.0,1.0)
    17/04/06 22:16:33 INFO Executor: Finished task 0.0 in stage 72.0 (TID 72). 995 bytes result sent to driver
    17/04/06 22:16:33 INFO TaskSetManager: Finished task 0.0 in stage 72.0 (TID 72) in 21 ms on localhost (executor driver) (1/1)
    17/04/06 22:16:33 INFO TaskSchedulerImpl: Removed TaskSet 72.0, whose tasks have all completed, from pool 
    17/04/06 22:16:33 INFO DAGScheduler: ResultStage 72 (foreach at Logistic_regression.scala:66) finished in 0.022 s
    (2.0,2.0)
    (2.0,2.0)
    (2.0,2.0)
    ......
    17/04/06 22:16:33 INFO Executor: Running task 0.0 in stage 76.0 (TID 76)
    17/04/06 22:16:33 INFO ShuffleBlockFetcherIterator: Getting 1 non-empty blocks out of 1 blocks
    17/04/06 22:16:33 INFO ShuffleBlockFetcherIterator: Started 0 remote fetches in 1 ms
    Precision = 0.9615384615384616
    17/04/06 22:16:33 INFO Executor: Finished task 0.0 in stage 76.0 (TID 76). 1807 bytes result sent to driver
    17/04/06 22:16:33 INFO TaskSetManager: Finished task 0.0 in stage 76.0 (TID 76) in 10 ms on localhost (executor driver) (1/1)
    17/04/06 22:16:33 INFO TaskSchedulerImpl: Removed TaskSet 76.0, whose tasks have all completed, from pool 

    参考文档:http://mocom.xmu.edu.cn/article/show/58578f482b2730e00d70f9fc/0/1

    展开全文
  • 虽然线性回归能够满足大部分的数据分析的要求,但是,线性回归并不是对所有的问题都适用, 因为有时候自变量和因变量是通过一个已知或未知的非线性函数关系相联系的,如果通过函数转换,将关系转换成线性关系,可能...
  • 文章目录学习要求1 数据的分类与模型选择1.1 变量取值类型1.2 案例1.2.1 建立Poisson对数线性模型2 广义线性模型2.1 广义线性模型函数glm()2.2 说明:Logistic模型2.3 举例2.4 一般线性模型:完全随机设计模型2.5 随机...
  • 目录第一部分 回归算法(一)线性回归线性模型线性回归损失函数(误差大小)减小误差的方法正规方程梯度下降正规方程、梯度下降API...分类算法——逻辑回归逻辑回归对数似然损失函数逻辑回归API逻辑回归案例——乳腺...
  • 文章目录逻辑回归案例1:银行贷款违约分析参数初始化建立随机逻辑回归模型,筛选变量建立逻辑回归模型非线性回归案例2多项式模型对数模型指数模型幂函数模型画图 逻辑回归 案例1:银行贷款违约分析 参数初始化 ...
  • 文章目录前言3.1 基本形式3.2 线性回归2.读入数据3.3 对数几率回归1.引入库3.4 线性判别回归3.5 多分类学习3.6 类别不平衡问题3.7 阅读材料总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能...
  • logistic回归概率详解

    千次阅读 2018-09-15 16:28:31
    在本篇中,我们依然按照相同的思路进行开展:首先复习一下概率的相关知识,最后以对率回归对数几率回归)为案例进行讲解。 1. 概率论 AI圣经《deep learning》一书把线性代数、概率与信息论和数值计算三部分...
  • 回归与支持向量机的总结

    千次阅读 2018-04-15 18:08:52
    一, 线性回归(linear regression) 引入:房价预测(以英尺计算)表达式 ...试想如下案例:二,逻辑斯蒂回归模型(logistics regression)(logistic regression)是统计学习中经典的分类方法.(属于对数线性模型)表达式:sigm...
  • 概率论及logistic回归讲解

    万次阅读 2017-08-17 16:29:30
    在本篇中,我们依然按照相同的思路进行开展:首先复习一下概率的相关知识,最后以对率回归对数几率回归)为案例进行讲解。 1. 概率论AI圣经《deep learning》一书把线性代数、概率与信息论和数值计算三部分作为...
  •  ---对数线性模型 涉及概念:样本集、特征(变量)、向量、矩阵、损失函数、最优化方法、梯度下降 掌握要求:独立、手写推倒至少5遍,用Python实现,解决一个实际案例。 Table of Contents Logistic Regression ...
  • 每章均给出大量分析案例,具体内容为SPSS简介、SPSS数据挖掘系统介绍、SPSS数据文件管理、SPSS数据预处理、SPSS基本统计分析、多重反应分析、均值比较与检验、统计图制作、参数检验、回归分析、方差分析、相关分析、...
  • 2.建立线性回归模型 (城区以石景山区为比较对象,最高西城区比石景山区每平方米高出3。706万元。房屋面积的增加会导致价格降低,下面变量一次类推 f检验拒绝原假设,说明建立的模型是显著的,调整的r方为0.5901...
  • 第2章基于神经网络的案例分析与实现 2.1农作物虫情预测 2.1.1基于神经网络的虫情预测原理 2.1.2BP网络设计 2.2模型参考控制 2.2.1模型参考控制概念 2.2.2模型参考控制实例分析 2.3神经网络控制的应用 2.3.1...
  • Excel数据分析与图表应用案例精粹_光盘 杨广于 清华大学出版社,2012 目录 第1章 公式与函数基本操作 1  1.1 Excel公式的基本操作 1  1.1.1 公式的输入与编辑 1  1.1.2 公式中的运算符 2  1.1.3 单元格的引用...
  • 机器学习总结

    2018-06-19 14:09:57
    流派 人物 文献 原理 优点 缺点 应用案例 数通启发 逻辑回归 统计 David Cox “The regression analysis of binary sequences (with discussion)” 对于二分类,将样本为正例概率和反例概率比率对数使用线性拟合 ...
  • 沙盒-源码

    2021-02-15 09:44:54
    使用DataBricks汇总所有横幅上的POS数据,用于预测的线性回归模型以及对系数的分析,以为围绕品牌/口味的决策提供依据。 R ^ 2为90.34%。 823-使用Reddit News预测DJIA-预测明天DJIA收市价的上涨或下跌的分类问题...
  • 简单来说,我觉得灰色模型其实是一种对数据优化处理后的回归预测模型而已,对于一些不规则的非线性数据,我们要做回归分析,都会进行一定的转换,例如指数转换、对数转换等,使其更平滑稳定,更具规律性,便于进
  • 本书从函数功能、函数格式、参数说明、注意事项、Excel 版本提醒、案例应用、交叉参考7 个方面,全面、细致地介绍了Excel 2016/2013/2010/2007/2003 中公式和函数的使用方法、实际应用和操作技巧。最后3 章还将公式...

空空如也

空空如也

1 2
收藏数 21
精华内容 8
关键字:

对数线性回归案例