【高级数理统计R语言学习】4 方差分析

一、背景
数据集展示了已迁离X市的高学历外来人口现在的月收入、教育程度和职业数据。试分析教育程度和职业对外来人口的收入是否有显著影响以及有怎样的影响。

二、要求和代码

#1
#显示数据集的结构。
data4 <- read.csv(file="F:/hxpRlanguage/homework4.csv",header=TRUE,sep=",")
data4 <- data4[,1:4] #删除异常列
data4 <- na.omit(data4) #删除有空值的行
cnames <- c("number","Education","Career","income")  #重命名
colnames(data4) <- cnames
str(data4)

#2
#显示数据集的前10条记录。
data4[1:10,]

#3
#利用R编写程序对教育程度和职业变量重新命名并进行归类,不能用Excel处理数据。
#类别划分标准见Word文件“方差分析数据编码要求”。
#教育程度的变量名为Education,取值为0、1。职业的变量名为Career,取值为1、2、3、4、5。
#注意:样本中有填写的半结构化数据。
#①对教育进行归类
data4$Education[data4$Education=="E. 大专" | data4$Education=="F. 大学本科"]<-"0"
data4$Education[data4$Education=="G. 硕士" | data4$Education=="H. 博士"]<-"1"
#②对职业进行归类
data4$Career[substring(data4$Career,1,2)=='O1'|
                 data4$Career=="企业/公司厂长经理或管理者"|
                 data4$Career=="党政机关领导人"|
                 data4$Career=="私人企业主"|
                 data4$Career=="企业党委书记"|
                 data4$Career=="外商代理人"|
                 data4$Career=="房产商"]<-1
data4$Career[substring(data4$Career,1,2)=='O2'|
                 data4$Career=="工商税务干部"|
                 data4$Career=="公安政法干部"|
                 data4$Career=="银行职员"|
                 data4$Career=="外资公司职员"|
                 data4$Career=="外贸公司职员"|
                 data4$Career=="机关事业单位一般职员"|
                 data4$Career=="民政工作者"|
                 data4$Career=="秘书"]<-2
data4$Career[substring(data4$Career,1,2)=='O3'|
                 data4$Career=="律师"|
                 data4$Career=="节目主持人"|
                 data4$Career=="歌星"|
                 data4$Career=="医生"|
                 data4$Career=="大学教师"|
                 data4$Career=="科学家"|
                 data4$Career=="演员"|
                 data4$Career=="音乐家"|
                 data4$Career=="画家"|
                 data4$Career=="记者"|
                 data4$Career=="科研人员"|
                 data4$Career=="工程师"|
                 data4$Career=="会计"|
                 data4$Career=="中小学教师"]<-3
data4$Career[substring(data4$Career,1,2)=='O4'|
                 data4$Career=="经纪人"|
                 data4$Career=="企业/公司一般职员"|
                 data4$Career=="物资管理干部"|
                 data4$Career=="个体户/自由职业者"|
                 data4$Career=="销售员"|
                 data4$Career=="营业员"]<-4
data4$Career[substring(data4$Career,1,2)=='O5'|
                 substring(data4$Career,1,2)=='O6'|
                 substring(data4$Career,1,2)=='O7'|
                 data4$Career=="远洋轮船员"|
                 data4$Career=="出租车司机"|
                 data4$Career=="公交司机"|
                 data4$Career=="火车司机"|
                 data4$Career=="电工"|
                 data4$Career=="建筑工人"|
                 data4$Career=="纺织工人"|
                 data4$Career=="家电维修工"|
                 data4$Career=="厨师"|
                 data4$Career=="邮递员"|
                 data4$Career=="快递员"|
                 data4$Career=="宾馆饭店服务员"|
                 data4$Career=="理发员"|
                 data4$Career=="保育员"|
                 data4$Career=="保姆"|
                 data4$Career=="A清洁工人"|
                 data4$Career=="勤杂工"|
                 data4$Career=="农民"]<-5

#4
#教育程度和职业变量归类完毕后,将它们转换成因子变量。
data4$fEducation <- as.factor(data4$Education)
data4$fCareer <- as.factor(data4$Career)

#5
#显示更新后的数据框的变量属性。
str(data4)

#6
#分别统计教育程度和职业变量每个水平的个数。
table(data4$fEducation)
table(data4$fCareer)

#7
#职业类型5的观察值太少,将其从总样本中删除。
data4 <- data4[-c(which(data4[,"fCareer"]=="5")),]
table(data4$fCareer) #删除以后职业类型为5的观察值被删除了,数量为0
data4$logIncome<-log(data4$income)

#8
#显示更新后的数据集的前10条记录。
data4[1:10,]

#9
#分别画出对数收入对教育程度和职业的盒状图。
par(mfrow = c(1, 2)) #从图中看出是明显有差异的
boxplot(data4$logIncome~data4$fEducation,xlab="教育水平",ylab="对数收入")
boxplot(data4$logIncome~data4$fCareer,xlab="职业",ylab="对数收入")

#10
#用Levene方法分别对各因素进行方差齐性检验并解释结果。
#若p<0.05拒绝原假设,方差不齐,p是方差相等的概率
library("car")
leveneTest(logIncome~fEducation,data=data4)
leveneTest(logIncome~fCareer,data=data4)

#11
#对教育程度和职业进行方差分析,对结果进行解释,分析这两个因素对
#对数收入是否有显著影响以及有怎样的影响。需要考虑因素的交互作用。
#0和1是低教育程度组+领导干部为主的群体
lm4 <- lm(logIncome~fEducation*fCareer,data=data4)
library(carData)
anova(lm4,test="Chisq")
summary(lm4)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值