友快網

導航選單

從一份四級成績單開始的推理......

作者:Janneil

偶然的機會,我得到了一份資料:某高校的四級考試成績冊。

資料是哪個時期的?哪所高校的?

我也不知道,不過真相就在推理之後。

不要走神,讓我們現在從一份資料出發,開始咱們的統計推理之旅……

準備工作

既然我們要對一組新資料進行分析,首先就要執行一條命令,清空之前儲存的變數空間。

rm(list = ls())

這主要是為了清除一些迭代控制變數,防止之前資料分析產生的變數重複使用在這次資料分析過程中,造成不良後果。

接下來要準備幾個用來分析資料的R包。

library(readxl)

library(tidyverse)

library(fBasics)

library(igraph)

library(ggplot2)

readxl,用以讀取資料,方便大家自由檢視資料集,不瞭解這個包的小夥伴可以透過文末連結檢視之前一篇關於資料讀取的小文章哦。

tidyverse,是一整套處理資料的R包集,而不只是一個小package,十分實用,強烈推薦給大家!

fBasics,用來進行資料探索性分析,研究分佈特性研究,包括引數估計和假設檢驗。此外,還有一些用於資料處理和管理的實用功能。

igraph,用於社交網路資料的分析和視覺化,這裡我們只是藉助於裡面的一個小函式對冪律分佈進行檢驗。

ggplot2,用來畫圖。

初識資料

#讀入資料

Data_score = readxl::read_xlsx(“四級成績資料。xlsx”,sheet = 1)

summary(Data_score)

我們先來看看這份資料。

學生姓名 學號 年級 班級

Length:5564 Length:5564 Length:5564 Length:5564

Class :character Class :character Class :character Class :character

Mode :character Mode :character Mode :character Mode :character

筆試成績總分

Min。 : 0。0

1st Qu。:345。0

Median :386。0

Mean :359。1

3rd Qu。:423。0

Max。 :613。0

資料集中一共包含5564名學生,五個變數:學生姓名、學號、年級、班級、筆試成績總分。

學生筆試成績中最小值為0分。

CET4 = Data_score$筆試成績總分

length(which(CET4 == 0))

[1] 474

我們發現交白卷的同學並且高達474人,這是怎麼回事,是因為任何題都不會嗎?

自然不是。根據監考經驗,每個考場很大機率上是有缺考同學的,也就是報了個名,但沒有去考試,畢竟每年兩次考試機會,這次沒去,下次準備好了就可以補上。

為了便於分析,我們把這一部分成績為零的樣本剔除掉。

Data_nonzero = Data_score[CET4 >0,]

n = nrow(Data_nonzero)

我們知道,成績一般服從的是正態分佈,那麼不妨一起來看看。

hist(Data_nonzero$筆試成績總分, breaks = 100, probability=T, col=“pink”)

lines(density(Data_nonzero$筆試成績總分), col=“blue”, lwd=2)

某高校四級成績直方圖

沒錯,恰好呈現一箇中間高、兩頭低的鐘形曲線的樣子。

再來看看,成績的均值和標準差。

mean(Data_nonzero$筆試成績總分)

[1] 392。5866

sd(Data_nonzero$筆試成績總分)

[1] 51。65606

均值近似為為393,標準差近似為51。7,從這裡有什麼發現?

上一期我們說過,教育部是透過正態分佈 Error! Filename not specified。計算各位考生的成績的。

此高校的均值比500少了將近110分,可以推斷,

這所學校一定不是“16所高校”之一。

年級資訊

下面我們具體看一下考生的年級情況。

factor(Data_nonzero$年級)

結果顯示:

Levels: 17 18 19 20

也就是說,這裡包含的的學生來自2017、2018、2019、2020級的。既然有2020級的,該年級的學生9月份入學,那肯定就是

2020年12月12日

那次考試的結果。

之所以,記得這次考試的確切時間,是因為那一天我有監考任務,還是主監考,但卻在12月11日熬到凌晨搶雙十二的貨。

在這裡,我們還能獲得一個資訊,20級是大一新生,卻有參加四級考試的機會,這在高校很少見,既然不是中國頭部院校,那應該就是

具有外語特色

的院校。

再來看一看不同年級的四級成績情況。

Grade_score = Data_nonzero %>% group_by(`年級`) %>%

summarise(num = n(),

mean_score = mean(`筆試成績總分`),

median_score = median(`筆試成績總分`),

sd_score = sd(`筆試成績總分`),

quantile_score = IQR(`筆試成績總分`),

) %>%

arrange(desc(`年級`))

# A tibble: 4 x 6

年級 num mean_score median_score sd_score quantile_score

1 20 1470 417。 418 54。4 70

2 19 1675 385。 386 48。7 67。5

3 18 1030 381。 384 43。7 58。8

4 17 915 379。 378 46。6 62

從均值和中位數來看,四個年級的成績呈現逐漸提高的趨勢。

該高校不同年級CET-4成績均值線圖

大一新生四級成績均值為417分,大二385分,大三381分,到了大四就已經是379了。

初步判斷,大學剛入學的時候,由於高中應試教育,大家的英語水平還不錯,將近一半的同學透過四級。

已經透過英語的同學自然不用再參加考試了,但是沒有透過的同學,可能隨著年級的升高,專注於享受美好的大學生活,英語水平嘛,自然就不可說不可說了……

所以大二到大四年級的同學,四級成績均值相近。

但是,從統計上來說,是不是這樣子呢?我剛才的推斷是正確的嗎?

該高校不同年級CET-4成績箱線圖

透過箱線圖,可以看出不同年級的波動情況不同。

要想知道該校各年級四級考生成績是否有顯著性差異,還得進行個兩兩比較。

下面,我們做一下顯著性檢驗。

sig_pair

TukeyHSD(sig_pair)

Tukey multiple comparisons of means

95% family-wise confidence level

Fit: aov(formula = 筆試成績總分 ~ 年級, data = Data_nonzero)

$年級

diff lwr upr p adj

18-17 2。894541 -2。840213 8。629295 0。5647874

19-17 6。617010 1。427623 11。806397 0。0058232

20-17 38。873347 33。557663 44。189030 0。0000000

19-18 3。722469 -1。276055 8。720993 0。2222592

20-18 35。978806 30。849284 41。108328 0。0000000

20-19 32。256337 27。744759 36。767914 0。0000000

從檢驗 Error! Filename not specified。-值可以看出,其他各年級與20級考生相比,平均成績有顯著差異,但是分別對17級與18級、18級與19級的考生成績進行檢驗的時候,卻不能拒絕無顯著差異的原假設。

這恰好驗證了我之前的推斷:

該校20級新生的四級考試成績最好,19-18、18-17兩兩比較,無顯著差異。

專業資訊

接下來,們透過這份資料看看這個學校的學科專業情況。

透過考生所在班級,提取專業資訊,按照參加考試的人數進行專業排序。

Major_score = Data_score %>% mutate( `專業` = str_extract(Data_score$`班級`,“[\u4e00-\u9fa5]{0,}”)) %>%

group_by(`專業`) %>%

summarise(num = n(),

mean_score = mean(`筆試成績總分`),

median_score = median(`筆試成績總分`),

sd_score = sd(`筆試成績總分`),

quantile_score = IQR(`筆試成績總分`),

) %>%

arrange(desc(`num`))

head(major_score)

# A tibble: 6 x 5

專業 num mean_score median_score quantile_score

1 會計學 640 351。 381 71。2

2 財務管理 405 347。 381 78

3 英語 378 414。 424 68。5

4 金融學 323 353。 387 73。5

5 廣播電視編導 271 334。 363 74

注意,這一次我們所用的資料是全體報考同學的。

考生越多的專業,一般代表該校對這個專業越重視,計劃招生人數多。

可以看出,該校

會計學、財務管理學、英語、金融學、廣播電視編導

當屬考生最多的前五大專業。

具體看一下,我們從這份資料中提出的專業型別。

unique(major_score$專業)

[1] “會計學” “財務管理” “英語”

[4] “金融學” “廣播電視編導” “審計學”

[7] “物流管理” “國際經濟與貿易” “市場營銷”

[10] “工程造價” “學前教育” “金融工程”

[13] “資訊管理與資訊系統” “工程管理” “法語”

[16] “資產評估” “經濟統計學” “日語”

[19] “投資學” “電子商務” “翻譯”

[22] “土木工程” “小學教育” “廣編”

[25] “動畫” “環境設計” “西班牙語”

[28] “服裝與服飾設計” “國貿” “大資料”

[31] “產品設計” “視覺傳達設計” “資料科學與大資料技術”

[34] “大資料管理與應用” “數媒藝術” “智慧建造”

[37] “美術學” “建築工程實驗班” “現代資訊科技”

[40] “視覺傳達” “智慧金融實驗班” “油畫實驗班”

[43] “數字媒體藝術” “現代商貿服務業創新” “國際化視野精英班”

[46] “感性設計” “學期教育” “影視編導”

計數是48個,但由於裡面有一些學生來自實驗班,這些實驗班可能也歸屬於某一專業。所以推斷該校實際專業個數應該是40左右。

我們再檢視一下考生人數最少的幾個班級或專業。

n_major

Major_score[(n_major-14):n_major,]

# A tibble: 15 x 5

專業 num mean_score median_score quantile_score

1 大資料管理與應用 27 396。 389 60

2 數媒藝術 22 318。 349 81

3 智慧建造 21 416。 425 58

4 美術學 16 214。 301 352。

5 建築工程實驗班 13 258。 332 366

6 現代資訊科技 13 348。 362 47

7 視覺傳達 9 352。 340 37

8 智慧金融實驗班 8 406。 414 56。2

9 油畫實驗班 5 291。 358 44

10 數字媒體藝術 4 398。 390。 42。2

11 現代商貿服務業創新 3 254。 352 206。

12 國際化視野精英班 2 448。 448。 1。5

13 感性設計 1 358 358 0

14 學期教育 1 350 350 0

15 影視編導 1 0 0 0

國際化視野精英班和智慧金融實驗班參加考試的學生都小於十人,但平均成績高達400分以上,說明這兩個實驗班所招學生的確是該校精英學生。

油畫實驗班和建築工程實驗班的成績的平均成績只有200多分,可見這兩個班應該招的是藝術生,文化分不高。

由於有缺考學生,為了減少這些極端值的影響,我們採用中位數對專業進行排序。

可以發現,排名靠前的二十個專業中,外類和經貿類專業很多。

根據這一小節的分析,可以推斷

該校一共有40個左右的專業,外語類和經貿類為該校重點發展的專業型別。

姓氏資訊

之所以來提取姓氏資訊,是為了圈定這所高校的所在地。

一般高校都有一定的區域性。根據之前我們的推斷:該高校不是國內頭部大學,估摸也就能吸引到附近幾個省區的學生,更糟糕的話,甚至只能吸引到省內學生。

而每一個地區,都有一些古代豪強大戶,這些大戶會明顯影響一個地區的姓氏頻率。

下面我們就一起來看一下這裡面藏了什麼秘密。

> surname = str_sub(Data_score$學生姓名,1,1)

freq_surname = table(surname)

freq_surname_dec = freq_surname[order(freq_surname,decreasing = TRUE)]

freq_surname_dec[freq_surname_dec>70]

# 執行結果

surname

陳 林 黃 王 張 李 吳 劉 楊 鄭 蔡 許 周

607 472 318 304 294 284 225 167 140 129 89 85 72

可以看出陳氏學生人數最多,不妨畫個圖瞅瞅。

plot(freq_surname_dec,xlab = “姓氏”,ylab = “頻數”,main = “姓氏頻數分佈圖”)

姓氏頻數分佈圖

有啥感覺?貌似服從冪律分佈是不是?

power_law = fit_power_law(freq_surname_dec)

power_law

# 結果

continuous alpha xmin logLik KS。stat KS。p

FALSE 1。993319 17 -293。8556 0。05656355 0。9898004

沒錯,一般情況下,姓氏的確服從冪律分佈,我們的檢驗 Error!

Filename not specified。值也說明了同樣一件事兒:Error! Filename not specified。值遠大於顯著性水平0。05,無法拒絕原假設冪律分佈的假設。

特別提取出考生人數大於70的幾個姓氏。

plot(freq_surname_dec[freq_surname_dec>70],xlab = “姓氏”,ylab = “頻數”,main = “姓氏頻數大於70的分佈圖”)

“陳”是全國第五大姓氏,而且也是浙江、廣州、福建三省人口最多的姓氏。

“林”主要分佈在福建、廣東兩省,大約佔林姓總人口的55%。據說在福建,每六個人中就有一個是姓林的。

“黃”最集中的分佈省份是江西和福建,這兩省的黃姓大約佔全國黃姓總人口的53。5%。

初步推斷這所高校可能位於福建地區。待看到後面緊跟的的“鄭”和“蔡”,就能更加確定了。

於是,我們推斷:

該高校應該是福建省的一所重點發展外語、金融貿易的特色院校。

鎖定目標

接下來激動人心的時刻到了!

首先利用我們之前的推斷,在百度搜索“福建 財經類 大學”,在中國教育線上網站列出四所高校:

其中具有外語特色的只有福州外語外貿學院。

我們找到這所學校的主頁,開啟學校簡介:

往下翻看,找到介紹專業的部分:

大家發現什麼?

是不是和我們之前獲取的專業資訊一致?

是的,真相只有一個!

這個資料是來自於

福州外語外貿學院

的!

各位小夥伴,有沒有覺得很有意思,你也可以試著用你獲取的資訊進行一系列推理哦,也許會有一個意想不到的結果出現!

作者介紹:

Janneil,數學博士,高校教師專注於資料科學。喜歡發一些統計學、機器學習等資料科學相關的影片和文章。公眾號“簡博士資料分析吧”,B站“簡博士”。

參考文獻:

浙江、廣東、福建三省人口最多的姓氏:陳姓!

https://www。sohu。com/a/326804971_160436

林氏分佈在中國哪些地方??!

https://zhidao。baidu。com/question/545430497。html

黃氏家族,在遷徙中發展壯大

https://www。sohu。com/a/371565514_120052908

上一篇:考得好更要報得好,志願填報有3大誤區,專家告訴你怎麼避開
下一篇:林沃和高山進病房看望萬嘉和,萬嘉和感謝大家挽回他的聲譽