一、背景
数据集展示了用户使用微博的基本情况,包括参与微博社区的层次,用户的年龄、性别、教育程度、月收入和使用微博的时间,试分析这些变量对用户参与微博社区的层次有什么样的影响?同时,对用户参与微博社区的层次作出预测。

二、要求和代码

#**************************变量关系问题*****************************************
#1
#利用R读取数据。注意:不要事先改动样本的数据内容。
#na.strings = c("NA") 的意思是文件中的缺失数据都是用NA进行表示;在读取文本文件时,默认的分割符号为空格。
data7 <- read.csv(file="F:/hxpRlanguage/homework7.csv",header=TRUE,sep=",",stringsAsFactors = F,na.strings=c("","NA"))#2
#显示数据集的前10条记录。
data7[1:10,]#3
#对变量重新命名,一律用英文字母命名变量。
cnames <- c("Number","Subtime","Level","Gender","Age","Education","Income","Useyear")
colnames(data7) <- cnames#4
#显示重命名后数据集中变量的属性情况。
str(data7)#5
#删除有缺失值的记录。
#nrow(data7) #353条数据
#is.na(data7) #判断缺失数据
sum(is.na(data7)) #统计缺失值个数
data7 <- na.omit(data7) #删除有缺失值的记录
nrow(data7) #351条数据#6
#删除收入小于等于0的记录。
data7$Income <- as.numeric(data7$Income)
which(is.na(data7$Income)) #展示警告为NA的数据位置,确实是View展示的序列号
data7 <- na.omit(data7) #删掉异常值
nrow(data7) #348条数据
data7 <- data7[c(which(data7$Income>0)),]
nrow(data7) #346条数据
#View(data7)#7
#删除年龄小于14岁或大于65岁的记录。
data7 <- data7[-c(which(data7$Age<14|data7$Age>65)),]
nrow(data7) #345条数据#8
#利用R编写程序计算用户使用微博的时间(以年为单位)。计算规则是:用调查时的年份减去第一次使用微博的年份。不能用Excel处理数据。
#从调查日期获取对应的年份和月份
data7$Subtime <- as.character(data7$Subtime)
survey.year <- rep(0,nrow(data7))
survey.month <- rep(0,nrow(data7))
for (i in 1:nrow(data7))
{a <- data7$Subtime[i] #将调查日期赋给a
survey.year[i] <- substr(a,1,4) #取调查日期取值的前4个字符,赋给survey.year
survey.month[i] <- substr(a,6,6) #取调查日期取值的第6个字符,赋给survey.month
}
#将survey.year,survey.month,第一次使用微博的时间转换为整型变量
survey.year <- as.integer(survey.year)
survey.month <- as.integer(survey.month)
data7$Useyear <- as.integer(data7$Useyear)
#计算用户的微博使用时间
data7$Usetime <- (survey.year-data7$Useyear)#9
#删除微博使用时间小于0或大于5的记录。
data7 <- data7[-c(which(data7$Usetime<0|data7$Usetime>5)),]
nrow(data7) #307条数据#10
#利用R编写程序对微博社区参与层次变量进行编码,不能用Excel处理数据。编码表见Word文件“数据编码要求”。
data7$Level[data7$Level=="A. 主要是随意浏览微博上的信息"]<-"1"
data7$Level[data7$Level=="B. 主要是发表原创微博、转发和评论他人微博,或者参与由其他人发起的讨论议题或活动"]<-"2"
data7$Level[data7$Level=="C. 自己主动发起讨论议题或规划活动,吸引其他成员参与"]<-"3"#11
#利用R编写程序对用户的性别变量进行编码,不能用Excel处理数据。编码表见Word文件“数据编码要求”。
data7$Gender[data7$Gender=="A. 男"]<-"1"
data7$Gender[data7$Gender=="B. 女"]<-"0"#12
#利用R编写程序对用户的教育程度变量进行编码,不能用Excel处理数据。编码表见Word文件“数据编码要求”。
data7$Education[data7$Education=="A. 初中及以下" | data7$Education=="B. 高中"]<-"1"
data7$Education[data7$Education=="C. 专科" | data7$Education=="D. 大学本科"]<-"2"
data7$Education[data7$Education=="E. 硕士及以上"]<-"3"#13
#做参与层次与性别、教育程度的列联表分析并进行显著性检验。
#转换为因子变量
data7$fLevel <- as.factor(data7$Level)
data7$fGender <- as.factor(data7$Gender)
data7$fEducation <- as.factor(data7$Education)
#参与层次和性别的列联表
table1 <- xtabs(~fLevel+fGender,data=data7)
chisq.test(table1)
table1
#参与层次和教育程度的列联表
table2 <- xtabs(~fLevel+fEducation,data=data7)
chisq.test(table2)
table2#14
#利用Probit定序回归模型拟合数据,分析参与层次与自变量(包括年龄、性别、教育程度、对数收入和微博使用时间)的关系。
#解释参数的含义。
library("MASS")
probit0 <- polr(fLevel~1,data=data7,Hess=T,method="probit")
data7$logIncome <- log(data7$Income)  #转对数收入
probit1 <- polr(fLevel~Age+fGender+fEducation+logIncome+Usetime,data=data7,Hess=T,method="probit")
anova(probit0,probit1) #对模型进行显著性检验,似然比统计量,整体上是否是显著的
library(car)
Anova(probit1,type="III") #对参数进行显著性检验
summary(probit1) #显示参数估计情况
tstats <- coef(probit1)/sqrt(diag(vcov(probit1))) #计算出模型probit1各个变量的p值
p.probit1 <- 2*pt(abs(tstats),df=df.residual(probit1),lower.tail=FALSE)
p.probit1#15
#利用Logistic定序回归模型拟合数据,分析参与层次与自变量(包括年龄、性别、教育程度、对数收入和微博使用时间)的关系。解释参数的含义。
logistic0 <- polr(fLevel~1,data=data7,method = "logistic",Hess = T)
logistic1 <- polr(fLevel~Age+fGender+fEducation+logIncome+Usetime,data=data7,Hess=T,method="logistic")
anova(logistic0,logistic1) #对模型进行显著性检验,整体上是否是显著的
Anova(logistic1,type="III") #对参数进行显著性检验
summary(logistic1) #显示参数估计情况
tstats <- coef(logistic1)/sqrt(diag(vcov(logistic1))) #计算出模型logistic1各个变量的p值
p.logistic1 <- 2*pt(abs(tstats),df=df.residual(logistic1),lower.tail=FALSE)
p.logistic1#*****************************预测问题*****************************************
#1
#将数据集分为模型训练集和预测集两部分,随机抽取60条记录作为预测集。
sub1 <- sample(nrow(data7),60,replace=F)  #随机抽取60条记录作为预测集
data7m <- data7[-sub1,]  #训练集
data7p <- data7[sub1,]   #预测集#2
#利用Probit定序回归模型训练数据。
probit3 <- polr(fLevel~Age+fGender+fEducation+logIncome+Usetime,data=data7m,Hess=T,method="probit")#3
#分别以AIC和BIC标准选择最优的Probit定序回归模型。
probit.aic <- step(probit3,trace=F)
summary(probit.aic)
probit.bic <- step(probit3,k=log(nrow(data7m)),trace=F)
summary(probit.bic)#4
#选择Probit定序回归模型预测数据,计算预测的正确率。
p1 <- predict(probit.aic,data7p)
p2 <- predict(probit.bic,data7p)
a1 = table(data7p$fLevel,p1)
a1
a2 = table(data7p$fLevel,p2)
a2
precision1 = sum(diag(a1))/sum(a1)
precision1
precision2 = sum(diag(a2))/sum(a2)
precision2#5
#利用Logistic定序回归模型训练数据。
logistic2 <- polr(fLevel~Age+fGender+fEducation+logIncome+Usetime,data=data7m,Hess=T,method="logistic")#6
#分别以AIC和BIC标准选择最优的Logistic定序回归模型。
logistic.aic <- step(logistic2,trace=F)
summary(logistic.aic)
logistic.bic <- step(logistic2,k=log(nrow(data7m)),trace=F)
summary(logistic.bic)#7
#选择Logistic定序回归模型预测数据,计算预测的正确率。
p3 <- predict(logistic.aic,data7p)
p4 <- predict(logistic.bic,data7p)
a3 = table(data7p$fLevel,p3)
a3
a4 = table(data7p$fLevel,p4)
a4
precision3 = sum(diag(a3))/sum(a3)
precision3
precision4 = sum(diag(a4))/sum(a4)
precision4#8
#比较Probit定序回归与Logistic定序回归两个模型预测的效果。

【高级数理统计R语言学习】7 定序回归相关推荐

  1. 【高级数理统计R语言学习】9 无序多分类分析

    一.背景 数据集展示了人们休闲的相关数据.试分析年龄.性别.教育程度.月收入对人们的休闲方式是否有显著影响以及有怎样的影响. 二.要求和代码 #1 #利用R读取数据 data9 <- read. ...

  2. 【高级数理统计R语言学习】5 协方差分析

    一.背景 数据集展示了已迁离X市的高学历外来人口现在的月收入.性别.迁入X市和迁离X市的日期.教育程度和职业这些方面的数据.试分析性别.在X市的居住时间.教育程度和职业对外来人口的收入是否有显著影响以 ...

  3. R语言学习笔记 06 岭回归、lasso回归

    R语言学习笔记 文章目录 R语言学习笔记 比较lm.ridge和glmnet函数 画岭迹图 图6-4 <统计学习导论 基于R语言的应用>P182 图6-6<统计学习导论 基于R语言的 ...

  4. R语言学习笔记——高级篇:第十四章-主成分分析和因子分析

    R语言 R语言学习笔记--高级篇:第十四章-主成分分析和因子分析 文章目录 R语言 前言 一.R中的主成分和因子分析 二.主成分分析 2.1.判断主成分的个数 2.2.提取主成分 2.3.主成分旋转 ...

  5. 广义线性回归模型之定序回归(logit/probit回归)—R语言实现+苹果实体店客户满意度案例

    定序回归 什么是定序回归? 定序回归的因变量是定序变量,数据类型是顺序数据.比如不满意,一般,满意:不合格,合格,优秀等. 假设因变量是评分,先由单变量回归说起,则普通的线性回归模型为 由于方程右边的 ...

  6. R语言学习笔记(1~3)

    R语言学习笔记(1~3) 一.R语言介绍 x <- rnorm(5) 创建了一个名为x的向量对象,它包含5个来自标准正态分布的随机偏差. 1.1 注释 由符号#开头. #函数c()以向量的形式输 ...

  7. R语言学习手记 (1)

    R语言学习手记 (1) 经管的会计和财管都会学数据统计与分析R语言这门课,加上我也有点兴趣,就提前选了这门课,以下的笔记由老师上课的PPT.<R语言编程艺术>和<R语言数据科学> ...

  8. 当当网 R 语言学习资料统计分析

    当当网 R 语言学习资料统计分析 一.网络数据的抓取 二.数据清洗与保存 (一)工作目录的修改 (二)导入数据并修改列名 1. 交互式编辑器 2. names()函数 3. rename()函数 (三 ...

  9. R语言学习笔记——入门篇:第一章-R语言介绍

    R语言 R语言学习笔记--入门篇:第一章-R语言介绍 文章目录 R语言 一.R语言简介 1.1.R语言的应用方向 1.2.R语言的特点 二.R软件的安装 2.1.Windows/Mac 2.2.Lin ...

最新文章

  1. 数位DP 回文序列 POJ-3280 Cheapest Palindrome
  2. thinkphp5.0 insert添加数据
  3. ML之回归预测:利用九大类机器学习算法对无人驾驶系统参数(2018年的data,18+2)进行回归预测+评估九种模型性能
  4. 信息系统项目管理师考试答题卡样式【下载PDF】
  5. hdu3549(又是最大流模板题)
  6. 循环队列之舞伴问题(含源码详解)
  7. 【玩转cocos2d-x之十五】关卡选择的设计
  8. 简便满分解法:1005 继续(3n+1)猜想 (25分)
  9. 工作194:vue.runtime.esm.js?2b0e:619 [Vue warn]: Duplicate keys detected: ‘/system‘. This may cause an
  10. Java设计模式笔记(2)工厂方法模式
  11. “我没搞懂元宇宙,但一天能赚9w块”
  12. Office组件无法正常使用的解决方法
  13. 组件价格跳水,光伏产品面临量价齐跌
  14. oracle11g是什么语言,oracle11g下载
  15. PowerDesigner执行sql脚本方式建立数据模型
  16. nmap命令扫描存活主机
  17. 云服务器ECS/EC2_转载
  18. 如果不能从做事转入治人,那么经年的螺丝钉岁月,会让你既无暇提高自己,也无法积累资源,在锈迹斑斑以后被新的螺丝钉换掉。
  19. 苹果笔记本硬盘替换方案
  20. 百度:自动驾驶出租车服务在北京全面开放!人工智能牛

热门文章

  1. 基于国产CH32V307单片机的图像混沌加密
  2. 中国移动应微笑着亮剑3G时代
  3. java实现网格法、KDTree空间检索
  4. 360全景拼接 opencv_【OpenCV】全景拼接
  5. 分享35套免费的国外 PSD 名片模板
  6. 用计算机弹千鸟,如果获得推演系统,我是先推演千鸟还是如来神掌
  7. 索引忽然失效Oracle,Oracle索引失效原因及解决方法
  8. P-1 jQuery代码的写法简介
  9. python+停车管理系统 毕业设计-附源码271400
  10. APP的注册和登录功能设计