基于R语言的选举数据的模型建立与预测分析

发布于:2024-04-10 ⋅ 阅读:(173) ⋅ 点赞:(0)

本文利用选举数据,通过K-近邻、支持向量机、人工神经网络等三类分类算法,利用R语言统计软件,实现选举数据的模型建立与预测分析。并对三个模型的预测结果进行对比分析,从而选择最优分类策略,进而为选举提供有效、有力的数据支持。

1.数据探索

1.1 数据来源及说明

  数据来源于某国选举数据,共有“Precinct”、“Race”、“Income”、“Candidate”四个变量,均为分类变量。

1.2 变量说明

  Precinct:管理区,为区号;
  Race:选民的种族,0=缺失,1=白人,2=西班牙裔,3=黑人,4=亚洲人,5=其他;
  Income:选民的收入,0=缺失,1=<10k,2=10-20k,3=20-30k,4=30-40k,5=40-50k,6=50-60k,7=60-70k,8=70k及以上;
  Candidate:候选人,1=Jackson,2=LaRouche,3=Dukakis,4=Gore,5=Simon。

1.3 变量处理

  由于变量“Race”、“Income”带有缺失值,于是先对所有数据进行缺失值处理,即保证数据的有效性,形成数据newdata。

# 导入数据
data<-read.csv("data.csv",header = T)
# 剔除缺失值,即race、income为0的行
newdata<-subset(data,data$race>0&data$income>0,
select=c("precinct","race","income","candidate" ))
再对目标变量进行因子化处理,其他数据进行归一化处理,即“Precinct”、“Race”、“Income”进行(x-min(x))/(max(x)-min(x))的计算替换,形成新的数据集newdatanor。
# 目标变量因子化
data$candidate<-as.factor(data$candidate)
# min-max标准化:(x-min)/(max-min)
normalize <- function(x) { return ((x-min(x))/(max(x)-min(x))) }
normalize(c(1, 3, 5)) ## 测试函数有效性
newdatanor <- as.data.frame(lapply(newdata[1:3],normalize))
newdatanor$candidate <- newdata$candidate
str(newdatanor)
得到数据集newdatanor,共计length(newdata$precinct)=1723条数据,于是对以上数据进行随机抽样,划分训练集和测试集,以70%的数据为训练集,30%为测试集。
#划分train&test
# train训练集
set.seed(3) ## 设立随机种子
train_id <- sample(1:length(newdatanor$precinct),
l

网站公告

今日签到

点亮在社区的每一天
去签到