当前位置:文档之家› 【原创】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+..+βnxn2数据描述该数据从美国人口普查数据库抽取而来,可以用来预测居民收入是否超过50K$/year。

该数据集类变量为年收入是否超过50k$,属性变量包含年龄,工种,学历,职业,人种等重要信息,值得一提的是,14个属性变量中有7个类别型变量。

3问题描述其实对于收入预测,主要是思考收入由哪些因素推动,再对每个因素做预测,最后得出收入预测。

这其实不是一个财务问题,是一个业务问题。

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

流失预测。

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

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

在这个过程中,我们将:1.导入数据2.检查类别偏差3.创建训练和测试样本4.建立logit模型并预测测试数据5.模型诊断4数据描述分析查看部分数据AGE WORKCLASS FNLWGT EDUCATION EDUCATIONNUM MARITALSTATUS1 39 State-gov 77516 Bachelors 13 Never-married2 50 Self-emp-not-inc 83311 Bachelors 13 Married-civ-spouse3 38 Private 215646 HS-grad 9 Divorced4 53 Private 234721 11th 7 Married-civ-spouse5 28 Private 338409 Bachelors 13 Married-civ-spouse6 37 Private 284582 Masters 14 Married-civ-spouse occupation RELATIONSHIP RACE SEX CAPITALGAIN CAPITALLOSS1 Adm-clerical Not-in-family White Male 2174 02 Exec-managerial Husband White Male 0 03 Handlers-cleaners Not-in-family White Male 0 04 Handlers-cleaners Husband Black Male 0 05 Prof-specialty Wife Black Female 0 06 Exec-managerial Wife White Female 0 0 HOURSPERWEEK NATIVECOUNTRY ABOVE50K1 40 United-States 02 13 United-States 03 40 United-States 04 40 United-States 05 40 Cuba 06 40 United-States 0对数据进行描述统计分析:AGE WORKCLASS FNLWGTMin. :17.00 Private :22696 Min. : 122851st Qu.:28.00 Self-emp-not-inc: 2541 1st Qu.: 117827Median :37.00 Local-gov : 2093 Median : 178356Mean :38.58 ? : 1836 Mean : 1897783rd Qu.:48.00 State-gov : 1298 3rd Qu.: 237051Max. :90.00 Self-emp-inc : 1116 Max. :1484705(Other) : 981EDUCATION EDUCATIONNUM MARITALSTATUSHS-grad :10501 Min. : 1.00 Divorced : 4443Some-college: 7291 1st Qu.: 9.00 Married-AF-spouse : 23Bachelors : 5355 Median :10.00 Married-civ-spouse :14976Masters : 1723 Mean :10.08 Married-spouse-absent: 418Assoc-voc : 1382 3rd Qu.:12.00 Never-married :1068311th : 1175 Max. :16.00 Separated : 1025(Other) : 5134 Widowed : 993OCCUPATION RELATIONSHIP RACEProf-specialty :4140 Husband :13193 Amer-Indian-Eskimo: 311Craft-repair :4099 Not-in-family : 8305 Asian-Pac-Islander: 1039Exec-managerial:4066 Other-relative: 981 Black : 3124Adm-clerical :3770 Own-child : 5068 Other : 271Sales :3650 Unmarried : 3446 White :27816Other-service :3295 Wife : 1568(Other) :9541SEX CAPITALGAIN CAPITALLOSS HOURSPERWEEKFemale:10771 Min. : 0 Min. : 0.0 Min. : 1.00Male :21790 1st Qu.: 0 1st Qu.: 0.0 1st Qu.:40.00Median : 0 Median : 0.0 Median :40.00Mean : 1078 Mean : 87.3 Mean :40.443rd Qu.: 0 3rd Qu.: 0.0 3rd Qu.:45.00Max. :99999 Max. :4356.0 Max. :99.00NATIVECOUNTRY ABOVE50KUnited-States:29170 Min. :0.0000Mexico : 643 1st Qu.:0.0000? : 583 Median :0.0000Philippines : 198 Mean :0.2408Germany : 137 3rd Qu.:0.0000Canada : 121 Max. :1.0000(Other) : 1709从上面的结果中我们可以看到每个变量的最大最小值中位数和分位数等等。

查看数据维度dim(inputData)[1] 32561 15从上面的结果中我们可以看到收入情况和一个人的资本收入以及性别存在着正相关。

从图中我们可以看到,如果性别是男性,那么他的收入一般会较高,性别是女性,收入较低。

5检查类偏差理想情况下,Y变量中事件和非事件的比例大致相同。

所以,我们首先检查因变量ABOVE50K中的类的比例。

0 124720 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.716.3模型诊断给出了β系数,标准误差,z值和p值。

如果模型具有多个级别的分类变量,则会为该变量的每个类别找到一个行条目。

这是因为,每个单独的类别被glm()视为一个独立的二进制变量。

在这种情况下,如果多类别变量中的少数类别在模型中并不显着(即p值大于显着性水平0.5)。

glm(formula = ABOVE50K ~ RELATIONSHIP + AGE + CAPITALGAIN + 职业 +EDUCATIONNUM, family = binomial(link = "logit"), data = trainingData)。

相关主题