在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
孩子上初中时拿到过全年级一次考试所有科目的考试成绩表,正好可以用于R语言的统计分析学习。为了不泄漏孩子的姓名,就用学号代替了,感兴趣可以下载测试数据进行练习。 num class chn math eng phy chem politics bio history geo pe ... ...
# 在windows中设置工作目录 setwd("D:/scores_test")
# 读入成绩表,第一行是header scores <- read.table("scores.txt", header=TRUE, row.names="num") head(scores) str(scores) # 显示对象的结构 names(scores) # 显示每一列的名称 attach(scores)
# 给出数据的概略信息 summary(scores) summary(scores$math) Min. 1st Qu. Median Mean 3rd Qu. Max. 3.00 84.00 100.00 93.98 111.00 120.00 # 1st Qu. 第一个4分位数 # 选择某行 child <- scores['239',] sum(child) #求孩子的总分 [1] 647.45
scores.class4 <- scores[class==4,] # 挑出4班的
# 求每个班的平均数学成绩 aver <- tapply(math, class, mean) # 画条曲线看看每个班的数学平均成绩 plot(aver, type='b', ylim=c(80,100), main="各班数学成绩平均分", xlab="班级", ylab="数学平均分") # 生成数据的二维列联表 table(math, class) class math 1 2 3 4 5 6 7 8 9 10 3 0 0 0 0 0 0 1 0 0 0 9 1 0 0 0 0 0 0 0 0 0 10 1 0 1 0 0 0 0 0 0 0 18 0 0 0 1 0 1 0 0 1 0 ……………
# 求4班每一科的平均成绩 subjects <- c('chn','math','eng','phy','chem','politics','bio','history','geo','pe') sapply(scores[class==4, subjects], mean) chn math eng phy chem politics bio history geo pe 83.10938 97.29688 85.60156 54.30469 34.67969 42.41406 41.79688 36.77344 44.24219 54.31250
# 求各班各科的平均成绩 aggregate(scores[subjects], by=list(class), mean)
# 看看数学成绩的分布图 hist(math)
默认是按频数形成的直方图,设置freq参数可以画密度分布图。 hist(math, freq=FALSE) lines(density(math), col='blue') rug(jitter(math)) #轴须图,在轴旁边出现一些小线段,jitter是加噪函数
# 核密度图 plot(density(chn), col='blue', lwd=2) lines(density(math), col='red', lwd=2) text(locator(2),c("语文", "数学")) #用鼠标拾取点,加上文本标注
# 箱线图 boxplot(math) boxplot.stats(math) #这个函数可以看到画出箱线图的具体的数据值 [1] 44 84 100 111 120 $n $conf $out #离群值
# 并列箱线图,看各班的数据分布情况 boxplot(math ~ class, data=scores) lines(tapply(math,class,mean), col='blue', type='b') #加上平均值 可以看出2班没有拖后腿的,4班有6个拖后腿的
# 看看各科成绩的相关性 # 可以看出:数学和物理的相关性达88%,物理和化学成绩的相关性达86%。 cor(scores[,subjects]) chn math eng phy chem politics bio history geo pe # 画个图出来看看 pairs(scores[,subjects]) # 详细看看数学和物理的线性相关性 cor_phy_math <- lm(phy ~ math, scores) plot(math, phy) abline(cor_phy_math) cor_phy_math # 也就是说拟合公式为:phy = 0.5258 * math + 4.7374,为什么是0.52?因为数学最高分为120,物理最高分为70 Call: Coefficients: |
请发表评论