【原创】r语言收入逻辑回归分析报告附代码数据

【原创】r语言收入逻辑回归分析报告附代码数据
【原创】r语言收入逻辑回归分析报告附代码数据

逻辑回归对收入进行预测

1逻辑回归模型

回归是一种极易理解的模型,就相当于y=f(x),表明自变量x与因变量y的关系。最常见问题有如医生治病时的望、闻、问、切,之后判定病人是否生病或生了什么病,其中的望闻问切就是获取自变量x,即特征数据,判断是否生病就相当于获取因变量y,即预测分类。

最简单的回归是线性回归,在此借用Andrew NG的讲义,有如图1.a所示,X为数据点——肿瘤的大小,Y为观测值——是否是恶性肿瘤。通过构建线性回归模型,如h θ (x)所示,构建线性回归模型后,即可以根据肿瘤大小,预测是否为恶性肿瘤h θ(x)≥.05为恶性,h θ (x)<0.5为良性。

Zi=ln(Pi1?Pi)=β0+β1x1+..+βnxn Zi=ln(Pi1?Pi)=β0+β1x1+..+βnxn

2数据描述

该数据从美国人口普查数据库抽取而来,可以用来预测居民收入是否超过50K$/year。该数据集类变量为年收入是否超过50k$,属性变量包含年龄,工种,学历,职业,人种等重要信息,值得一提的是,14个属性变量中有7个类别型变量。

3问题描述

其实对于收入预测,主要是思考收入由哪些因素推动,再对每个因素做预测,最后得出收入预测。这其实不是一个财务问题,是一个业务问题。

对于某企业新用户,会利用大数据来分析该用户的信息来确定是否为付费用户,弄清楚用户属性,提高运营人员的办事效率。

流失预测。这方面会偏向于大额付费用户,提取额特征向量运用到应用场景的用户流失和预测里面去。

我们尝试并预测个人是否可以根据数据中可用的人口统计学变量使用逻辑回归预测收入是否超过$ 50K的资金。在这个过程中,我们将:

1.导入数据

2.检查类别偏差

3.创建训练和测试样本

4.建立logit模型并预测测试数据

5.模型诊断

4数据描述分析

查看部分数据

AGE WORKCLASS FNLWGT EDUCATION EDUCATIONNUM MARITALSTATUS

1 39 State-gov 77516 Bachelors 13 Never-married

2 50 Self-emp-not-inc 83311 Bachelors 1

3 Married-civ-spouse

3 38 Private 215646 HS-grad 9 Divorced

4 53 Private 234721 11th 7 Married-civ-spouse

5 28 Private 338409 Bachelors 13 Married-civ-spouse

6 3

7 Private 284582 Masters 14 Married-civ-spouse occupation RELATIONSHIP RACE SEX CAPITALGAIN CAPITALLOSS

1 Adm-clerical Not-in-family White Male 2174 0

2 Exec-managerial Husband White Male 0 0

3 Handlers-cleaners Not-in-family White Male 0 0

4 Handlers-cleaners Husband Black Male 0 0

5 Prof-specialty Wife Black Female 0 0

6 Exec-managerial Wife White Female 0 0 HOURSPERWEEK NATIVECOUNTRY ABOVE50K

1 40 United-States 0

2 1

3 United-States 0

3 40 United-States 0

4 40 United-States 0

5 40 Cuba 0

6 40 United-States 0

对数据进行描述统计分析:

AGE WORKCLASS FNLWGT

Min. :17.00 Private :22696 Min. : 12285

1st Qu.:28.00 Self-emp-not-inc: 2541 1st Qu.: 117827

Median :37.00 Local-gov : 2093 Median : 178356

Mean :38.58 ? : 1836 Mean : 189778

3rd Qu.:48.00 State-gov : 1298 3rd Qu.: 237051

Max. :90.00 Self-emp-inc : 1116 Max. :1484705

(Other) : 981

EDUCATION EDUCATIONNUM MARITALSTATUS

HS-grad :10501 Min. : 1.00 Divorced : 4443

Some-college: 7291 1st Qu.: 9.00 Married-AF-spouse : 23

Bachelors : 5355 Median :10.00 Married-civ-spouse :14976

Masters : 1723 Mean :10.08 Married-spouse-absent: 418

Assoc-voc : 1382 3rd Qu.:12.00 Never-married :10683

11th : 1175 Max. :16.00 Separated : 1025

(Other) : 5134 Widowed : 993

OCCUPATION RELATIONSHIP RACE

Prof-specialty :4140 Husband :13193 Amer-Indian-Eskimo: 311

Craft-repair :4099 Not-in-family : 8305 Asian-Pac-Islander: 1039

Exec-managerial:4066 Other-relative: 981 Black : 3124

Adm-clerical :3770 Own-child : 5068 Other : 271

Sales :3650 Unmarried : 3446 White :27816

Other-service :3295 Wife : 1568

(Other) :9541

SEX CAPITALGAIN CAPITALLOSS HOURSPERWEEK

Female:10771 Min. : 0 Min. : 0.0 Min. : 1.00

Male :21790 1st Qu.: 0 1st Qu.: 0.0 1st Qu.:40.00

Median : 0 Median : 0.0 Median :40.00

Mean : 1078 Mean : 87.3 Mean :40.44

3rd Qu.: 0 3rd Qu.: 0.0 3rd Qu.:45.00

Max. :99999 Max. :4356.0 Max. :99.00

NATIVECOUNTRY ABOVE50K

United-States:29170 Min. :0.0000

Mexico : 643 1st Qu.:0.0000

? : 583 Median :0.0000

Philippines : 198 Mean :0.2408

Germany : 137 3rd Qu.:0.0000

Canada : 121 Max. :1.0000

(Other) : 1709

从上面的结果中我们可以看到每个变量的最大最小值中位数和分位数等等。

查看数据维度

dim(inputData)

[1] 32561 15

从上面的结果中我们可以看到收入情况和一个人的资本收入以及性别存在着正相关。从图中我们可以看到,如果性别是男性,那么他的收入一般会较高,性别是女性,收入较低。

5检查类偏差

理想情况下,Y变量中事件和非事件的比例大致相同。所以,我们首先检查因变量

ABOVE50K中的类的比例。

0 1

24720 7841

显然,不同收入人群比例有偏差。所以我们必须以大致相等的比例对观测值进行抽样,以获得更好的模型。

6建模分析

6.1创建训练和试验样本

解决类别偏差问题的一个方法是以相等的比例绘制训练数据(开发样本)的0和1。在这样做的时候,我们将把其余的inputData不包含在testData 中。

test_ones <-input_ones[-input_ones_training_rows, ]

test_zeros <-input_zeros[-input_zeros_training_rows, ]

testData <-rbind(test_ones, test_zeros) row bind the 1's and 0's

接下来,需要找到变量的信息值,以了解在解释因变量(ABOVE50K)方面的价值。

6.2构建Logit模型和预测

确定模型的最优预测概率截止值

默认的截止预测概率分数为0.5或训练数据中1和0的比值。但有时,调整概率截止值可以提高开发和验证样本的准确性。InformationValue :: optimalCutoff功能提供了找到最佳截止值以提高1,0,1和0的预测的方法,并减少错误分类错误。可以计算最小化上述模型的错误分类错误的最优分数。

optCutOff <-optimalCutoff(testData$ABOVE50K, predicted)[1]

=> 0.71

6.3模型诊断

给出了β系数,标准误差,z值和p值。如果模型具有多个级别的分类变量,则会为该变量的每个类别找到一个行条目。这是因为,每个单独的类别被glm()视为一个独立的二进制变量。在这种情况下,如果多类别变量中的少数类别在模型中并不显着(即p值大于显着性水平0.5)。

glm(formula = ABOVE50K ~ RELATIONSHIP + AGE + CAPITALGAIN + 职业 +

EDUCATIONNUM, family = binomial(link = "logit"), data = trainingData)

相关主题
相关文档
最新文档