精华内容
下载资源
问答
  • 线性回归数据集

    2017-12-25 23:14:29
    .csv格式的线性回归的实验数据集,可以比较简单地拟合成一个直线。
  • 机器学习(4)-多元线性回归数据集与源码下载。博客当中用到的源码与数据集
  • 线性回归python实现(含数据集),结构清晰,适合初学者学习
  • 线性回归合集

    2017-07-26 15:50:51
    线性回归,局部加权线性回归,ridge,lasso
  • 数据集-用做回归.csv

    2020-06-20 11:29:25
    可用做深度学习测试的一维线性回归数据集。数组大小247*900,实验数据取自真实场景,回归精度好。9种特征,每种特征有100条数据。
  • 在UCL机器学习数据库里一个糖尿病数据集,通过这一数据集,学习如何利用线性回归分析来预测糖尿病: 数据地址: https://github.com/susanli2016/Machine-Learning-with-Python/blob/master/diabetes.csv 数据特征...

    数据集描述

    根据美国疾病控制预防中心的数据,现在美国1/7的成年人患有糖尿病。但是到2050年,这个比例将会快速增长至高达1/3。在UCL机器学习数据库里一个糖尿病数据集,通过这一数据集,学习如何利用线性回归分析来预测糖尿病:

    数据地址:
    https://github.com/susanli2016/Machine-Learning-with-Python/blob/master/diabetes.csv

    数据特征属性:
    index([‘Pregnancies’, ‘Glucose’, ‘BloodPressure’, ‘SkinThickness’, ‘Insulin’,‘BMI’, ‘DiabetesPedigreeFunction’, ‘Age’, ‘Outcome’], dtype=‘object’)

    特征(怀孕次数,血糖,血压,皮脂厚度,胰岛素,BMI身体质量指数,糖尿病遗传函数,年龄,结果)

    “结果”是要预测的特征,0意味着未患糖尿病,1意味着患有糖尿病。在768个数据点中,500个被标记为0,268个标记为1。

    多元线性回归简介

    实验模型为线性回归模型,使用最小二乘法来计算回归系数,构建出相应的多元线性回归模型,并利用线性回归模型来进行糖尿病相关性预测,最后使用MSE,r^2 和校正r^2来评价模型的好坏。

    相关数学推导如下图所示:
    在这里插入图片描述

    纯手打代码实现

    import pandas as pd 
    import numpy as np 
    from numpy.linalg import inv#矩阵求逆
    from numpy import dot #矩阵点乘
    #矩阵转置.T
    
    data=pd.read_csv("线性回归分析数据.csv")
    x_train=np.array(data.iloc[0:616,0:8])
    y_train=np.array(data.ix[0:615,['Outcome']])
    x_test=np.array(data.iloc[616:768,0:8])
    y_test=np.array(data.ix[616:768,['Outcome']])
    #第一步,读入数据并划分测试集,训练集,(按照2/8原则划分)
    
    b=dot(dot(inv(dot(x_train.T,x_train)),x_train.T),y_train)
    #第二步,根据数学推导公式计算
    print(b)
    
    y_predict=dot(x_test,b)
    #print(y_predict[10][0])
    i=0
    for i in range(0,152):
        if y_predict[i][0]>0.5:
            y_predict[i][0]=1
        else:
            y_predict[i][0]=0
    
    #第三步,根据回归系数矩阵和测试集得出预测矩阵
    
    e=(y_test-y_predict)*(y_test-y_predict)
    #print(e)
    sse=0
    for i in range(0,152):
        sse=sse+e[i][0]
    mse=sse/152
    #print(mse)
    #第四步,计算mse 0.26973684210526316
    
    m=0
    sum=0
    for i in range(0,152):
        sum=sum+y_test[i][0]
    m=sum/152
    #mean=np.full((152,1),fill_value=m)
    #print(mean)
    if m>0.5:
        mean=np.ones((152,1))
    else:
        mean=np.zeros((152,1))
    d=(y_test-mean)*(y_test-mean)
    bd=0
    for i in range(0,152):
        bd=bd+d[i][0]
    r=1-(sse/bd)
    #第五步,计算决定系数r方 0.2407407407407407
    
    n=152
    p=8
    r_adj=1-(((1-r)*(n-1))/(n-p-1))
    #print(r_adj)
    #第六步,计算校正决定系数 0.19826469826469828
    

    sklearn实现

    from warnings import simplefilter
    simplefilter(action='ignore',category=FutureWarning) 
    
    import pandas as pd 
    import numpy as np 
    data=pd.read_csv("线性回归分析数据.csv")
    #print(data.columns)
    #print(data.groupby('Outcome').size())
    #print(data.info())
    #第一步,读入数据集,并查看数据集基本信息
    
    from sklearn.model_selection import train_test_split
    from sklearn.linear_model import LinearRegression
    x_train,x_test,y_train,y_test=train_test_split(data.loc[:,data.columns!='Outcome'],data['Outcome'],stratify=data['Outcome'],random_state=66)
    #第二步,划分训练集和测试集
    
    model=LinearRegression()
    model.fit(x_train,y_train)
    a=model.intercept_
    b=[]
    b=model.coef_
    #print(a)
    #print(b)
    #第三步,调用线性回归模型
    
    score=model.score(x_test,y_test)
    #print(score)
    #第四步,调用评价函数进行评价 0.29204611312836626
    
    展开全文
  • 机器学习(6)-逻辑回归数据集与源码下载。博客当中用到的源码与数据集
  • https://blog.csdn.net/u013963380/article/details/82287696博客中使用测试的数据集
  • 机器学习课程2 回归分析【题目1】使用R对内置鸢尾花数据集iris(在R提示符下输入iris回车可看到内容)进行回归分析,自行选择因变量和自变量,注意Species这个分类变量的处理方法。解答:1.iris数据集介绍鸢尾花(iris)...

    机器学习课程2  回归分析

    【题目1】

    使用R对内置鸢尾花数据集iris(在R提示符下输入iris回车可看到内容)进行回归分析,自行选择因变量和自变量,注意Species这个分类变量的处理方法。

    解答:

    1.iris数据集介绍

    鸢尾花(iris)是数据挖掘常用到的一个数据集,包含150种鸢尾花的信息,每50种取自三个鸢尾花种之一(setosa,versicolour或virginica)。每个花的特征用下面的5种属性描述萼片长度(Sepal.Length)、萼片宽度(Sepal.Width)、花瓣长度(Petal.Length)、花瓣宽度(Petal.Width)、类(Species)。

    观察这5个变量,我们发现Species是字符变量、非连续,难以直接进行线性分析。故首先应对定义哑变量处理离散变量Species。

    在这里了我参考了“练数成金”论坛数据分析与数据挖掘技术板块

    “fjchenxd”的文章

    http://www.dataguru.cn/forum.php?mod=viewthread&tid=265621

    以及“夕阳无语”的文章

    http://www.dataguru.cn/forum.php?mod=viewthread&tid=262887

    2    样本多重线性检查

    2.1  求方阵,并对其标准化、中心化

    2.2  求方阵的条件数,即kappa值

    kappa = 291.2384,易知100kappa1000,多重共线性处于可忍受范围。

    2.3  求解矩阵的特征值与相应的特征根

    3.   一元线性回归分析

    3.1         观察散点图

    通过plot(iris_demo)命令,我们目测得到Petal.Width与Petal.Length有很强的线性关系。

    3.2   对Petal.Width与Petal.Length做一元线性回归分析

    我们发现回归系数中,截距与因变量都有3颗*,t值很大,Pr值很小,拒绝系数不正确的假设检验。

    相关系数平方:0.9271,数据相当好。

    3.3   对Petal.Width与Petal.Length做一元线性回归诊断

    P  = 1.68e-08 <0.05,具有统计学意义,拒绝原假设,说明自变量Petal.Width不服从正态分布。(?)

    残差图正常,模型的残差服从正态分布。

    结论:

    综上,关于Petal.Width与Petal.Length的一元线性回归模型样本服不服从正态分布假设,误差满足独立性,等方差。线性回归模型的系数通过假设检验,相关系数平方和接近1。

    此一元线性回归模型合理有效。

    4 多元线性回归分析

    4.1变量进行逐步回归

    4.2  多元线性回归模型的探索

    4.2.1 包含全部变量

    回归系数中Petal.length和isVerisicolor只有一颗星,而根据step结果,如果去掉这两个,AIC值只会从-389增大到-386,所以尝试去掉这两个值:

    去掉Petal.Length和 isVersicolor后,截距的假设检验效果提升至两颗*,但Petal.Width的Pr值反而增大。更严重的是,相关系数平方和从0.6352降至0.5871。效果反而变差。

    4.2.2尝试加上二次项

    增加了Sepal.Length^2项后,相关系数提升到了0.6365。

    4.2.3 增加乘积项

    在增加了乘积项后,多元线性回归模型更加合理。

    4.2.4 在所有变量的基础上直接加乘积项

    此模型的相关系数0.6728,相比4.2.3的模型更好,但是变量isVersicolor假设检验只有一颗* .

    5. 回归诊断

    对4.2.3与4.2.4的两个多元线性回归模型进行回归诊断:

    5.1 变量正态分布检验

    对变量进行正态分布检验,P值均小于0.05,拒绝了原假设(样本服从正态分布)。

    5.2  残差图

    (1)4.2.3 多元线性回归模型残差图

    (2)4.2.4 多元线性回归模型残差图

    由以上两幅图可知残差分布正常,服从正态分布。

    结论:

    综上,采用4.2.4回归模型更优。

    【题目2】

    使用R对内置longley数据集进行回归分析,如果以GNP.deflator作为因变量y,问这个数据集是否存在多重共线性问题?应该选择哪些变量参与回归?

    解答:

    1.    longley数据集

    1.1  longley数据集简介

    Longley数据集来自J.W.Longley(1967)发表在JASA上的一篇论文,是强共线性的宏观经济数据,包含GNP deflator(GNP平减指数)、GNP(国民生产总值)、Unemployed(失业率)、ArmedForces(武装力量)、Population(人口)、year(年份),Emlpoyed(就业率)。

    LongLey数据集因存在严重的多重共线性问题,在早期经常用来检验各种算法或计算机的计算精度。

    1.2   观察散点图

    通过散点图观察,我发现变量GNP.deflator、GNP、Population、Employed

    分别与year的函数图像趋势相近,可能隐含多重共线性。

    2.   样本多重共线性检查

    2.1  求方阵,并对其标准化、中心化

    2.2  求方阵的条件数,即kappa值

    kappa = 14550.47, kappa1000,多重共线性非常严重。

    2.3  求解矩阵的特征值与相应的特征根

    2.4 删选变量

    可以看到变量4,5,6的特征值都非常小,逐步缩小所取变量数:

    故删除变量Population,Year,Employed,只选取1:4共4个变量:

    3.   逐步删选变量

    3.1 原始模型

    可以看到此回归模型自变量Uemployed,Armed.Froces没有很好地拒绝假设检验。

    3.2  使用step函数逐步回归分析

    逐步回归分析显示减去Armed.Forces和Uemployed变量,对AIC的影响不大

    3.3 去掉Armed.Forces和Uemployed的线性模型

    以上线性回归模型截距与回归系数均有3颗*,很好的拒绝了假设检验。

    同时线性相关系数平方:0.9832,模型线性程度非常高。

    4.   样本回归诊断

    4.1 样本正态分布假设检验

    由正态假设检验可得:自变量GNP的p值>0.5接受了假设检验,符合正态分布;

    因变量GNP.deflator的p值 = 0.4268<0.5,具有较强统计学意义,拒绝了假设检验。

    4.2  残差分析

    结论:

    线性回归模型 lm(formula = GNP.deflator ~ GNP, data =long_1)符合正态分布假设,误差满足独立性,等方差,不存在多重共线性。

    回归系数Pr值很小,拒绝假设检验(假设系数不正确),相关系数十分接近1。

    综上,该线性模型合理。

    【题目3】(可选)对课程幻灯片里的top1000 sites(数据集上传在课程资源里)分析进行改进,使到带pageviews的预测模型的检验指标比幻灯片里所显示的更加理想

    1.    读入top_1000数据集

    2.    定义哑变量

    3.     多元线性回归分析

    无截距多元线性回归模型:

    formula= log(PageViews) ~ HasAdvertisingYes + HasAdvertisingNo+ log(UniqueVisitors) +InEnglishYes                      + InEnglishNo – 1

    该回归模型相关系数平方:0.9969,数据令人满意。但是自变量中有多余变量。

    4.  逐步回归分析

    逐步回归分析结果:

    根据逐步回归分析结果编写新模型:

    5.    结论:

    log(PageView)~1.164519*log(UniqueVisitors) + 1.006265*InEnglishNo-

    0.311884*HasAdvertisingNo

    各自变量拒绝系数不正确的假设检验,Multiple R-squared结果高达0.9969。

    该模型相较于课堂所讲模型,更具合理性!

    展开全文
  • 机器学习(3)-简单线性回归数据集与源码下载数据集与源码下载。博客当中用到的源码与数据集
  • SPSS(六)SPSS之回归分析衍生方法(图文+数据集) 我们知道线性回归是有适用条件的 因变量的独立性 正态性 方差齐性 无极端值 自变量、因变量要有线性趋势 假如不满足以上的条件,还能做回归分析吗?其实有...

    SPSS(六)SPSS之回归分析衍生方法(图文+数据集)

    我们知道线性回归是有适用条件的

    • 因变量的独立性
    • 正态性
    • 方差齐性
    • 无极端值
    • 自变量、因变量要有线性趋势

     

    假如不满足以上的条件,还能做回归分析吗?其实有一大类针对此相关的方法

    曲线拟合过程

    针对问题:自变量、因变量无线性趋势

    • 直线关系毕竟是较少数的情形,当因变量和自变量呈曲线关系时:

           有明确的公式:利用变量变换将曲线直线化,然后加以拟合

           关系不明:基于图形观察,拟合可能的曲线,从中挑选出最为合适的一个

    • 具体拟合方法:根据所选择的公式,将自变量和因变量进行变量变换,然后按照直线回归的方式进行拟合
    • 可拟合的曲线种类

           高次方曲线:一、二、三次方曲线

           指数、对数、幂曲线

           特殊类型曲线:S形曲线、生长曲线等

     

    简单来说分两种情况

    • 第一种情况:一个是已经给出表达式,我们将其进行变量转换为线性,之后进行回归
    • 第二种情况:另一个是我们结合可拟合的曲线种类,看哪一个表达式拟合效果比较好,挑选这个表达式进行线性变换,之后回归

    案例:通风时间和毒物浓度的曲线方程(第一种情况)

    根据文献资料,随着通风时间的增加,密闭空间内污染物的浓度应当呈指数方程下降。现考察某通风设备的换气效果,在室内放置了某种挥发性物质(模拟毒物),待其充分分散到室内空气中后开始通风,每一分钟测量一次室内空气中的毒物浓度,请建立时间与空气中毒物浓度的指数方程。

    (已有明确的方程,按此拟合即可。等价于先进行变量变换,然后拟合直线方程)

    数据集如下

    1	2.1250
    2	1.7420
    3	1.2360
    4	1.1270
    5	.7310
    6	.4690
    7	.4000
    8	.3810
    9	.2840
    10	.2760
    11	.0620
    12	.0610
    13	.0408
    14	.0428
    15	.0305

    首先进行变量变化(转换----计算变量)

    建一个新变量,对原始的y进行ln运算,使之ln(y)与x成线性关系

    建模

     

    结果查看,一般我们只关注和几个地方

    R方:决定系数,衡量模型可用性及模型信息量的表达,越接近1越好

    Anova:里面的Sig.表示lny与x解决问题使用线性回归模型是否可行的

    系数a:Sig.这个因变量纳入这个模型有没有意义

     

    还有一个比较快的方法,不用计算出新的变量(分析----回归----曲线估计)

    结果和刚才线性回归查看方法差不多

    不过有图形展现出来

     

    线性回归想保存预测值方法

    1. 保存--预测值
    2. 将模型信息输出到XML文件

     

    加权最小二乘法

    加权最小二乘法是对原模型进行加权,使之成为一个新的不存在异方差性的模型,然后采用普通最小二乘法估计其参数的一种数学优化技术。

    针对问题:方差齐性不齐

    一般我们如何发现线性回归的方差齐性不齐的呢,一般是在做残差分析的时候,假如我们遇到的标准化残差图如下(残差随着自变量的变大而增大或者随着自变量的变大而减小,就证明有问题

    • 因变量的变异随着某些指标的改变而改变(下面的例子)

           1.以地区为观察单位调查某种事物的发生率

           2.研究通货膨胀和失业率对股票价格的影响

                    高价股票的波动一般都会大于低价股票

     

    针对这种问题解决办法

    需要人为调控各案例在回归中的重要性,根据用户提供的可能预测因变量变异大小的指标,在拟合时对变异较小(即测量更精确)的测量值赋予较大的权重(现实生活中也会有反过来的情况)

    为了解决上述数据分析的问题,SPSS专门提供了加权最小二乘法,它可根据用户提供的权重变量的大小为不同的数据不同权重。需要指出的是,加权最小二乘法是一种带有倾向性的数据拟合方法,如果因变量方差实际并无波动,或选择了错误的变量用于权重,那么它的拟合结果不如普通最小二乘法准确。

    案例:不等量样品数据的回归方程

    实验中收集得15对数据,每对数据都是将n份样品混合后测得的平均结果,但各对数据的n大小不等,试求出XY的直线回归方程

    2	188	4.90
    3	195	4.58
    11	207	4.40
    16	217	4.18
    18	224	3.90
    19	236	3.85
    20	246	3.77
    22	255	3.54
    18	266	3.47
    15	275	3.34
    12	285	3.19
    5	295	3.08
    5	312	2.94
    4	320	2.79
    1	329	2.49

    分析----回归----权重估计 

    结果如下

    对数似然值越大代表这个模型越好

     

    加权后的决定系数基本上都是低于原模型的,其他结果和线性回归的结果解读一样

     

     

    岭回归

    针对问题:数据存在共线性,非独立

     岭回归是一种专门用于共线性数据分析的有偏估计方法

    §有偏意味着对数据信息有所取舍

    §通过丢弃部分信息,以得到更为稳定的分析结果

    §实际上是一种改良的最小二乘法

    §由于是有偏估计,统计检验已经居次要地位,故一般不再给出

     

    案例:用外形指标推测胎儿周龄

    测得22例胎儿的身长、头围、体重和胎儿受精周龄,研究者希望能建立由前三个外形指标推测胎儿周龄的回归方程

    数据集如下

    1.00	13.00	9.20	50.00	13.00
    2.00	18.70	13.20	102.00	14.00
    3.00	21.00	14.80	150.00	15.00
    4.00	19.00	13.30	110.00	16.00
    5.00	22.80	16.00	200.00	17.00
    6.00	26.00	18.20	330.00	18.00
    7.00	28.00	19.70	450.00	19.00
    8.00	31.40	22.50	450.00	20.00
    9.00	30.30	21.40	550.00	21.00
    10.00	29.20	20.50	640.00	22.00
    11.00	36.20	25.20	800.00	23.00
    12.00	37.00	26.10	1090.00	24.00
    13.00	37.90	27.20	1140.00	25.00
    14.00	41.60	30.00	1500.00	26.00
    15.00	38.20	27.10	1180.00	27.00
    16.00	39.40	27.40	1320.00	28.00
    17.00	39.20	27.60	1400.00	29.00
    18.00	42.00	29.40	1600.00	30.00
    19.00	43.00	30.00	1600.00	31.00
    20.00	41.10	27.20	1400.00	33.00
    21.00	43.00	31.00	2050.00	35.00
    22.00	49.00	34.80	2500.00	36.00

    我们在不做任何修正的情况下,把所有自变量和因变量放入模型进行线性回归

    分析----回归----线性

    发现结果逻辑上解释不上来,在身长和体重不变的情况下,受精周龄增加一岁头围会减少2.159cm,这个解释不通,所以我们考虑是不是没有把所有变量都纳入的需要,是不是有变量没有意义,我们下一步使用逐步回归模型,观察结果

     

    使用向前法、向后法、逐步法观看结果

    向前法结果

    向后法结果

    逐步法结果

     

    发现逐步回归模型也不能解决我们的问题,我们先来查看一下变量之间的相关性

    分析----相关----双变量

    发现变量之间显著相关,现在使用岭回归来解决回归问题

    岭回归分析在SPSS中没有可供点击的对话框,我们需要写一段超级简单的语法来调用SPSS的宏。

    SPSS公司可能没有提供人机交互的对话框,于是他们提供了一段宏程序,存储路径为“你的SPSS安装目录\SPSS\Statistics\20\Samples\Simplified Chinese\Ridge regression.sps”。

    我们在SPPS中,点击打开新建语法

    输入代码之后执行

    INCLUDE 'C:\Program Files\IBM\SPSS\Statistics\20\Samples\Simplified Chinese\Ridge Regression.sps'.
    RIDGEREG ENTER= long touwei weight
    /dep = y 
    / inc = 0.01 .
    

    查看结果1、不同K值下自变量的标准化回归系数;2、岭轨图,3、R方的变化图。

    随着K的增大可以理解为我们在舍弃更多的信息,RSQ随着K的增大而减少,证明模型信息量在损失,后面为三个系数在变化,找其稳定值

    查看岭迹图找到合适K值

     

    选择一定K值下的标准化回归系数,选择的原则是各个自变量的标准化回归系数趋于稳定时的最小K值。因为K值越小我们引入的单位矩阵就少,偏差就小。

    想获得非标准的偏回归系数、t值和p值呢(可以参考下面这篇文章链接)

    http://www.ttdoc.cn/article/572.jhtml

    完整的岭回归分析做完了,各个自变量的标准化回归系数合理了

    假如我们研究的问题只是做预测,看模型的决定系数,发现其很高,其实可以忽略共线性问题,直接用来预测即可

    但是假如我们要看自变量的影响,就必须解决变量之间的共线性

     

     

    最优尺度回归

    样本量大结果才稳定,灵敏度高,当样本少的时候结果不稳定

    针对问题:当自变量为有序/无序的变量

    解决办法:根据数据情况进行迭代搜索,找到适当的变换方法对原始分类变量进行转换,将原始变量一律转换为连续性评分,然后再进行方程拟合,分类变量越多优势越明显,从实用的角度出发,该方法可以被作为一种探索性方法使用

     

    案例:生育子女数的回归模型

    收集了一批妇女的曾生子女数、年龄、居住地类别(1:城市,2:农村)、受教育程度(1~5分别代表文盲半文盲、小学、初中、高中、大学及以上),请建立后三个变量对曾生子女数的回归模型

    红框是教育程度的哑变量编码,我们可以直接利用childnum与age、area、四个哑变量进行线性回归建模(分析--回归--线性),但是我们现在利用系统把edu变量转换成连续性

    1	20	1	3	0	1	0	0
    1	22	2	4	0	0	1	0
    2	24	2	3	0	1	0	0
    1	25	1	5	0	0	0	1
    1	28	1	5	0	0	0	1
    2	30	2	4	0	0	1	0
    2	32	1	5	0	0	0	1
    2	34	2	5	0	0	0	1
    2	36	1	4	0	0	1	0
    3	38	2	2	1	0	0	0
    2	40	1	3	0	1	0	0
    3	42	2	3	0	1	0	0
    3	44	2	2	1	0	0	0
    3	45	1	2	1	0	0	0
    4	48	1	1	0	0	0	0
    5	50	2	1	0	0	0	0

    建模(分析--回归--最佳尺度)

    定义变量度量 

     

    结果如下

    R2用来衡量模型的可用性

    系数里面有回归的系数

    主要看相关性和容差,重要性其实有点类似标化回归系数

     

    回到数据视图,可以看到,各变量经过最佳尺度变换,对分类或有序变量进行了数值量化后的数据列,各数据轨迹列由左往右,首列为因变量,其他列与自变量的顺序一致。

     结合查看“转换图”,我们查看图知道文盲半文盲和小学间差了0.25,文化程度回归系数为-0.446,所以小学比文盲半文盲平均少生0.25*0.446约等于1个小孩

    展开全文
  • 决策回归树主要用CART算法来实现。本资料包括有决策回归树的python实现以及相应的数据集,可以自动生成相应的决策树图。
  • teengamb数据集进行回归分析

    千次阅读 2020-09-26 11:54:40
    回归分析 在 faraway 包中,包含一个 47 行 5 列的 teengamb 数据集(加载 faraway包后,可通过代码“head(teengamb)”查看数据的前 5 行,通过“?teengamb”查看每个变量的具体意义),该数据是研究关于青少年赌博...

    回归分析

    在 faraway 包中,包含一个 47 行 5 列的 teengamb 数据集(加载 faraway包后,可通过代码“head(teengamb)”查看数据的前 5 行,通过“?teengamb”查看每个变量的具体意义),该数据是研究关于青少年赌博情况的数据集。针对该数据集,请回答以下问题:
    Sex:性别,0=男性,1=女性。
    Status:基于父母职业的社会经济状况评分
    Income:每周的收入,英镑
    Verbal:正确定义的 12 各单词的口头评分
    Gamle:每年赌博的开支,英镑。
    (1)如果只考虑 sex、income、verbal 三个变量作为自变量,预测因变量 gamble
    时,可以使用哪些回归模型进行预测?要求建立的回归模型数量不少于 3 个,
    并对为什么要建立这样的回归模型进行解释;
    先进行相关系数分析:

    library(corrplot)
    library(faraway)
    library(ggcorrplot)
    library(tidyr)
    library(GGally)
    data(teengamb)
    head(teengamb)
    teengamb<-teengamb
    ?teengamb
    teen<-data.frame(teengamb$sex,teengamb$income,teengamb$gamble,teengamb$verbal)
    voice_cor <- cor(teen)
    corrplot.mixed(voice_cor,tl.col="black",tl.pos = "lt",
                   tl.cex = 2,number.cex = 1)
    

    结果如下:

    > head(teengamb)
      sex status income verbal gamble
    1   1     51   2.00      8    0.0
    2   1     28   2.50      8    0.0
    3   1     37   2.00      6    0.0
    4   1     28   7.00      4    7.3
    5   1     65   2.00      8   19.6
    6   1     61   3.47      6    0.1
    

    在这里插入图片描述
    可发现,income 和 gamble 收入相关性达到 0.62,较强相关,gamble 与 sex 相关系数为-0.41,成一定相关性,说明与性别有关系。

    再进行多元线性回归:

    ## 多元线型回归
    lm1 <- lm(gamble~sex+income+verbal,data = teengamb)
    summary(lm1)
    

    结果如下:

    > summary(lm1)
    
    Call:
    lm(formula = gamble ~ sex + income + verbal, data = teengamb)
    
    Residuals:
        Min      1Q  Median      3Q     Max 
    -50.639 -11.765  -1.594   9.305  93.867 
    
    Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
    (Intercept)  24.1390    14.7686   1.634   0.1095    
    sex         -22.9602     6.7706  -3.391   0.0015 ** 
    income        4.8981     0.9551   5.128 6.64e-06 ***
    verbal       -2.7468     1.8253  -1.505   0.1397    
    ---
    Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
    
    Residual standard error: 22.43 on 43 degrees of freedom
    Multiple R-squared:  0.5263,	Adjusted R-squared:  0.4933 
    F-statistic: 15.93 on 3 and 43 DF,  p-value: 4.148e-07
    
    

    经多元线性回归,系数检验发现,verbal 检验的 p 值为 0.1397>0.05,不显著,故可考虑剔除 verbal 做多元线性回归。

    考虑剔除verbal :

    #剔除verbal
    lm2 <- lm(gamble~sex+income,data = teengamb)
    summary(lm2)
    library(broom)
    ## 可视化回归模型的图像
    par(mfrow = c(2,2))
    plot(lm2)
    

    结果如下:

    > summary(lm2)
    
    Call:
    lm(formula = gamble ~ sex + income, data = teengamb)
    
    Residuals:
        Min      1Q  Median      3Q     Max 
    -49.757 -11.649   0.844   8.659 100.243 
    
    Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
    (Intercept)    4.041      6.394   0.632  0.53070    
    sex          -21.634      6.809  -3.177  0.00272 ** 
    income         5.172      0.951   5.438 2.24e-06 ***
    ---
    Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
    
    Residual standard error: 22.75 on 44 degrees of freedom
    Multiple R-squared:  0.5014,	Adjusted R-squared:  0.4787 
    F-statistic: 22.12 on 2 and 44 DF,  p-value: 2.243e-07
    

    可发现,参数的检验 sex,income 都较为显著,而 Adjusted R-squared=0.4787
    可得到回归方程:
    gamble = 4.041 − 21.634 ∗ sex + 5.172 ∗ income
    在这里插入图片描述
    再进行逐步线性回归:

    Enblm <- lm(gamble~sex+income+verbal,data = teengamb)
    summary(Enblm)
    ## Coefficients: (1 not defined because of singularities)
    ## 因为奇异性问题,有一个变量没有计算系数
    ## 判断模型的多重共线性问题
    kappa(Enblm,exact=TRUE) #exact=TRUE表示精确计算条件数;
    alias(Enblm)
    ## 逐步回归
    Enbstep <- step(Enblm,direction = "both")
    summary(Enbstep)
    ## 判断模型的多重共线性问题
    kappa(Enbstep,exact=TRUE)
    vif(Enbstep)
    

    结果如下:

    > Enbstep <- step(Enblm,direction = "both")
    Start:  AIC=296.21
    gamble ~ sex + income + verbal
    
             Df Sum of Sq   RSS    AIC
    <none>                21642 296.21
    - verbal  1    1139.8 22781 296.63
    - sex     1    5787.9 27429 305.35
    - income  1   13236.1 34878 316.64
    
    > summary(Enbstep)
    
    Call:
    lm(formula = gamble ~ sex + income + verbal, data = teengamb)
    
    Residuals:
        Min      1Q  Median      3Q     Max 
    -50.639 -11.765  -1.594   9.305  93.867 
    
    Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
    (Intercept)  24.1390    14.7686   1.634   0.1095    
    sex         -22.9602     6.7706  -3.391   0.0015 ** 
    income        4.8981     0.9551   5.128 6.64e-06 ***
    verbal       -2.7468     1.8253  -1.505   0.1397    
    ---
    Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
    
    Residual standard error: 22.43 on 43 degrees of freedom
    Multiple R-squared:  0.5263,	Adjusted R-squared:  0.4933 
    F-statistic: 15.93 on 3 and 43 DF,  p-value: 4.148e-07
    
    > kappa(Enbstep,exact=TRUE)
    [1] 39.20124
    > vif(Enbstep)
         sex   income   verbal 
    1.030968 1.051585 1.049578 
    

    可发现,不存在多重共线性,故结果将与多元线性回归一致。

    (2)使用所有的变量预测因变量 gamble,并且使用 step()函数对模型进行逐步回归,分析逐步回归后的结果;

    Enblm <- lm(gamble~sex+income+verbal+status,data = teengamb)
    summary(Enblm)
    ## Coefficients: (1 not defined because of singularities)
    ## 因为奇异性问题,有一个变量没有计算系数
    ## 判断模型的多重共线性问题
    kappa(Enblm,exact=TRUE) #exact=TRUE表示精确计算条件数;
    alias(Enblm)
    ## 逐步回归
    Enbstep <- step(Enblm,direction = "both")
    summary(Enbstep)
    ## 判断模型的多重共线性问题
    kappa(Enbstep,exact=TRUE)
    vif(Enbstep)
    

    结果如下:

    #原始状态,未剔除变量
    > summary(Enblm)
    
    Call:
    lm(formula = gamble ~ sex + income + verbal + status, data = teengamb)
    
    Residuals:
        Min      1Q  Median      3Q     Max 
    -51.082 -11.320  -1.451   9.452  94.252 
    
    Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
    (Intercept)  22.55565   17.19680   1.312   0.1968    
    sex         -22.11833    8.21111  -2.694   0.0101 *  
    income        4.96198    1.02539   4.839 1.79e-05 ***
    verbal       -2.95949    2.17215  -1.362   0.1803    
    status        0.05223    0.28111   0.186   0.8535    
    ---
    Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
    
    Residual standard error: 22.69 on 42 degrees of freedom
    Multiple R-squared:  0.5267,	Adjusted R-squared:  0.4816 
    F-statistic: 11.69 on 4 and 42 DF,  p-value: 1.815e-06
    
    > kappa(Enblm,exact=TRUE) #exact=TRUE表示精确计算条件数;
    [1] 263.8049
    > alias(Enblm)
    Model :
    gamble ~ sex + income + verbal + status
    #此时存在多重共线性,条件数为263,较大
    
    
    #逐步回归后:
    > Enbstep <- step(Enblm,direction = "both")
    Start:  AIC=298.18
    gamble ~ sex + income + verbal + status
    
             Df Sum of Sq   RSS    AIC
    - status  1      17.8 21642 296.21
    <none>                21624 298.18
    - verbal  1     955.7 22580 298.21
    - sex     1    3735.8 25360 303.67
    - income  1   12056.2 33680 317.00
    
    Step:  AIC=296.21
    gamble ~ sex + income + verbal
    
             Df Sum of Sq   RSS    AIC
    <none>                21642 296.21
    - verbal  1    1139.8 22781 296.63
    + status  1      17.8 21624 298.18
    - sex     1    5787.9 27429 305.35
    - income  1   13236.1 34878 316.64
    > summary(Enbstep)
    
    Call:
    lm(formula = gamble ~ sex + income + verbal, data = teengamb)
    
    Residuals:
        Min      1Q  Median      3Q     Max 
    -50.639 -11.765  -1.594   9.305  93.867 
    
    Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
    (Intercept)  24.1390    14.7686   1.634   0.1095    
    sex         -22.9602     6.7706  -3.391   0.0015 ** 
    income        4.8981     0.9551   5.128 6.64e-06 ***
    verbal       -2.7468     1.8253  -1.505   0.1397    
    ---
    Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
    
    Residual standard error: 22.43 on 43 degrees of freedom
    Multiple R-squared:  0.5263,	Adjusted R-squared:  0.4933 
    F-statistic: 15.93 on 3 and 43 DF,  p-value: 4.148e-07
    
    #R方为0.4933,P值<0.05,模型检验通过。
    
    > kappa(Enbstep,exact=TRUE)
    [1] 39.20124
    > vif(Enbstep)
         sex   income   verbal 
    1.030968 1.051585 1.049578 
    

    逐步回归之后,回归模型的条件数变为 39.20124,此时剔除了 status 变量。

    (3)如果以性别为因变量,能够根据其他的几个数据特征准确地预测出性别吗?如果可以,那么预测的准确率是多少?如果不可以,请说明为什么?

    利用逻辑斯特回归预测:

    library(caret)
    library(Metrics)
    library(dplyr)
    
    voicelm <- glm(sex~.,data = teengamb,family = "binomial")#利用逻辑斯特回归预测
    summary(voicelm)
    label<-predict(voicelm,teengamb[,2:5],type = "response")
    label <- as.factor(ifelse(label > 0.5,1,0))#将数据规范为0,1
    table(teengamb$sex,label)
    sprintf("逻辑回归模型的精度为:%f",accuracy(teengamb$sex,label))
    

    结果如下:

    > summary(voicelm)
    
    Call:
    glm(formula = sex ~ ., family = "binomial", data = teengamb)
    
    Deviance Residuals: 
         Min        1Q    Median        3Q       Max  
    -1.50499  -0.57882  -0.09388   0.59949   2.58612  
    
    Coefficients:
                Estimate Std. Error z value Pr(>|z|)  
    (Intercept)  3.63905    1.90352   1.912   0.0559 .
    status      -0.10108    0.04033  -2.507   0.0122 *
    income       0.10653    0.18900   0.564   0.5730  
    verbal       0.13822    0.25711   0.538   0.5909  
    gamble      -0.08651    0.04247  -2.037   0.0417 *
    ---
    Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
    
    (Dispersion parameter for binomial family taken to be 1)
    
        Null deviance: 63.422  on 46  degrees of freedom
    Residual deviance: 36.140  on 42  degrees of freedom
    AIC: 46.14
    
    Number of Fisher Scoring iterations: 7
    
    > table(teengamb$sex,label)
       label
         0  1
      0 23  5
      1  4 15
    > sprintf("逻辑回归模型的精度为:%f",accuracy(teengamb$sex,label))
    [1] "逻辑回归模型的精度为:0.808511"
    

    精度为80%,较低,可尝试使用深度学习方法和支持向量机等机器学习方法。详细可参加另一篇文章《对于teengamb数据集进行神经网络分类》

    展开全文
  • Iris(鸢尾花)数据集是多重变量分析数据集数据集包含150行数据,分为3类,每类50行数据。 每行数 据包括4个属性:Sepal Length(花萼长度)、Sepal Width(花萼宽度)、Petal Length(花瓣长度)、 Petal ...
  • 数据集下载地址:https://pan.baidu.com/s/1HaBVhEmSaBKBfZVRMww56Q 密码:qlge 线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。 回归分析中,只包括一个...
  • 通过在UCI开源网站上下载Car Evaluation数据集,对其使用机器学习算法进行分析,分别使用了分类算法,回归算法,聚类算法,文件中附数据集以及代码,代码使用jupyter运行即可,代码中介绍比较详细,通熟易懂,...
  • 波士顿房价数据集——回归分析

    千次阅读 2021-12-02 22:01:12
    分别使用线性回归、二次多项式回归、三次多项式回归对数据集Boston进行回归分析,并比较这三种回归的结果。 一、加载数据 # Boston数据集 # 使用load_boston()方法,从sklearn.datasets模块导入波士顿房价数据集 ...
  • 10python数据分析-回归分析

    千次阅读 2019-05-22 11:19:58
    回归分析 回归分析:通过建立模型来研究变量之间相互关系的密切程度、结构状态及进行模型预测的一种有效工具 一元线性回归: 多元线性回归: 多个因变量与多个自变量的回归: 一元非线性回归:对自变量或者因变量...
  • logistic回归,回归分析,logistic回归分类器,鸢尾花数据集
  • 糖尿病回归 通过回归模型(逻辑,线性)对糖尿病数据集进行预测分析 Regression.py包含我们用于回归分析的实际代码 泡菜文件是经过培训的模型,可以下载和测试。 糖尿病.csv是我们在该项目中使用的数据集
  • SPSS之相关分析与线性回归模型(图文+数据集) 在讲解线性回归模型之前,先来学习相关分析的知识点,因为相关分析回归有着密切的联系 相关分析 任意多个变量都可以考虑相关问题,不单单局限于两个变量...
  • 内含完整的逻辑回归数据集,已经逻辑回归训练,训练完成后的模型测试部分(包括代码和完成数据集),用python3编码,可直接运行。训练完成后可直接显示点的颜色和分布,以及训练得到的直线。
  • 泰坦尼克号数据集:准备的逻辑回归模型和完成的随机森林分析
  • 1logistic 分布:设X是连续随机变量,X服从logistic分布是指X具有以下分布函数和密度函数:  分布函数F(x)属于逻辑斯蒂函数,图形是一条S曲线,该曲线以...二项逻辑斯蒂回归模型是一种分类模型,由条件概率分布P(...
  • 鸢尾花卉数据集,是一类多重变量分析数据集。通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。是机器学习基础学习的典型案例。
  • 回归结果分析 一.Python代码 #!/usr/bin/env python3 # encoding: utf-8 ''' @file: ridgeWine.py @time: 2020/5/31 0031 17:45 @author: Jack @contact: jack18588951684@163.com ''' import urllib.request ...
  • 使用python实现对波士顿房价的预测。
  • ”父母子女身高“数据集(高尔顿数据集)进行线性回归分析实验一、配置Excel二、对数据做线性回归分析三、父亲母亲分别与儿子做回归方程分析1、父亲与儿女数据分析2、母亲与儿女身高数据分析 一、配置Excel 实验将...
  • 父母-子女身高数据集的线性回归分析目录简介一、父子身高数据1、回归分析2、身高预测二、母子身高数据1、回归分析2、相关数据3、相关数值认识三、总结与参考资料1、总结2、参考资料 目录 简介 “父亲高则儿子高,...
  • 实验数据集:本文采用的数据集是由kaggle上面的diamonds数据集,该数据集收集了约54000颗钻石的价格和质量的信息。每条记录由十个变量构成,其中有三个是名义变量,分别描述钻石的切工,颜色和净度;carat:克拉,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 96,522
精华内容 38,608
关键字:

回归分析数据集

友情链接: TugasJava.zip