摘 要: S-P表是一種簡單易用的測試信息分析工具,它不僅能分析被測者的學(xué)習(xí)狀態(tài),而且能從項目反應(yīng)分析的側(cè)面了解教育者的工作績效。傳統(tǒng)的人工計算方法雖然簡單,但過程復(fù)雜,不利于推廣和應(yīng)用。本文主要討論了S-P表算法的MATALB語言實現(xiàn)。
關(guān)鍵詞: S-P表 算法實現(xiàn) MATLAB語言
S-P表分析法是一種分析測試項目、學(xué)生團體和個體的有效方法。在教學(xué)過程中,如果將其與教學(xué)設(shè)計、教學(xué)評價等理論結(jié)合,可起到良好的效果。但目前S-P表的應(yīng)用情況不盡如人意,究其原因,S-P表需手工計算,尚無開源的軟件供教學(xué)相關(guān)人員使用是重要方面。因此,我就此做相關(guān)研究。
一、S-P表簡介
?。ㄒ唬㏒-P表的定義
S-P表是由測試項目的二值得分作排序處理后,具有學(xué)生(S)曲線和問題(P)曲線的二維表格。S-P表分析法是利用學(xué)生的問題得分表進行教學(xué)情況分析的一種信息處理方法,使用這種方法既可評價學(xué)生個體的學(xué)習(xí)狀況,又能對班級整體的學(xué)習(xí)傾向及整個問題的妥當(dāng)程度作出評價。
表1是10位學(xué)生對10個測試項目應(yīng)答情況的S-P表,其中,實線為S曲線,虛線為P曲線。
(二)S-P表的功能
S-P表可用于對測試項目、教師教學(xué)過程、學(xué)生團體和個體的分析。具體有以下功能:評價測試項目的應(yīng)答情況;反映團體和個體的學(xué)習(xí)狀況;可應(yīng)用于多種類型的測試;有效輔助教學(xué)評價。
二、S-P表的算法
對于大量的測試數(shù)據(jù),若采用人工方法求解,工作量大,因此我們采用程序來實現(xiàn)。本章節(jié)介紹S-P表算法和工具選擇。
?。ㄒ唬㏒-P表的算法
流程圖采用“N-S”模式,如圖1所示。S-P表算法要解決行排序、列排序等,具體過程如下:
1.開始
2.輸入數(shù)據(jù)A=(aij)m*n,其中,矩陣A表示原始成績矩陣,m、n分別表示學(xué)生和問題數(shù)目。
3.根據(jù)是否是多值數(shù)據(jù)決定預(yù)處理情況。
If aij=′Y′
F(aij)′進行“1-0”映射
Else
4.行排序
對∑aj的值按高低順序由上至下排序。
5.列排序
對∑ai的值按高低順序由左至右排序。
6.參數(shù)計算
利用2.1.5中的公式計算相關(guān)參數(shù)。
7.畫S-P曲線
根據(jù)2.1.6中,S-P曲線的畫法畫S-P曲線。
8.輸出S-P表
將程序得到的S-P表輸出。
9.結(jié)束
根據(jù)上述討論可知,處理數(shù)據(jù)時需要數(shù)學(xué)運算突出的軟件,而MATLAB即是這樣一種軟件:可方便處理矩陣運算,不需要生成圖形化界面,只需要將原始數(shù)據(jù)以矩陣形式作為程序片段,拷貝至命令窗口即可進行計算。下面對其進行介紹。
?。ǘ┕ぞ哌x擇
MATLAB(Matrix Laboratory,矩陣實驗室)語言是國際自動控制領(lǐng)域的首選語言,是一種功能非常強大的科學(xué)計算軟件,因其內(nèi)置函數(shù)多,且在控制系統(tǒng)、仿真設(shè)計領(lǐng)域和處理矩陣等數(shù)學(xué)問題方面尤為突出,而S-P表需要進行大量的矩陣運算,所以最符合我們的要求。
其主要特點有:(1)功能強大,數(shù)學(xué)功能尤其突出;(2)語言簡單,通俗易懂;(3)代碼短小,程序高效;(4)計算功能強大;(5)擴充能力強,可開放性強,幫助功能完整。
默認設(shè)置情況下,運行MATLAB程序時,顯示MATLAB主窗口、命令(Command Window)窗口、歷史(Command History)窗口、當(dāng)前目錄(Current Directory)窗口和工作間(Workspace)管理窗口等工作窗口。
三、S-P表的算法實現(xiàn)
依據(jù)圖1的順序,現(xiàn)將S-P表程序的關(guān)鍵代碼進行分塊解釋。
?。ㄒ唬崿F(xiàn)主觀題成績預(yù)處理的程序
clear
initial _score_ array=[
15 7 8 8 7 8
……];
?。踓lass_count,problem_count]=size(initial _score_ array)
class_S_P = zeros(class_count,problem_count);
for i=1:class_count
for problem_count=1
if class_mean(i,1)>=15
class_S_P(i,1)=1;
……
end
該程序片段用來實現(xiàn)主觀題成績的預(yù)處理功能。Clear的作用是清除存儲空間的變量,以免對下面的程序運行產(chǎn)生影響。根據(jù)原始數(shù)據(jù)initial _score_ array,首先獲取其行列數(shù),然后構(gòu)造矩陣class_S_P,其大小與initial _score_ array相同,且其默認各元素為0,用MATLAB中的zeros()函數(shù)實現(xiàn)。該段程序以主觀題P2(對應(yīng)試卷中的21題)為例:若某學(xué)生該題得分大于等于15即將矩陣中相對應(yīng)元素設(shè)置為1,否則不作處理為0不變。而每次for循環(huán)或者if語句結(jié)束時用end標(biāo)志。
?。ǘ崿F(xiàn)學(xué)生正確率排名和問題正答率排名的程序
以下程序用來構(gòu)建S-P表
?。踕ata_input_row,data_input_col]=size(data_input);
s_p_form=zeros(data_input_row+4,data_input_col+4);
for i=1:data_input_row
s_p_form(i,data_input_col+1)=i;
for i=1:data_input_col
s_p_form(data_input_row+1,i)=i;
s_p_form(1:data_input_row,data_input_col+2)=sum(data_input,2);
s_p_form(data_input_row+2,1:data_input_col)=sum(data_input);
s_p_form(data_input_row+1,data_input_col+1)=sum(sum(data_input));
data_input為經(jīng)過預(yù)處理后的成績矩陣,同上一程序塊相同,第一行的作用仍是獲取輸入數(shù)據(jù)的行和列。第二行構(gòu)建S-P表,S-P表的大小比data_input多四行四列,其中第一行為問題原來的列數(shù),即試題的題號,第二行為每道題答對的數(shù)量,第三行為題目的注意系數(shù),第四行為平均答對率;第一列為記錄行數(shù),即學(xué)生的編號,第二列為每個人答對題的數(shù)目,第三列為學(xué)生注意系數(shù),第四列為該學(xué)生的問題答對率。
以下程序用來實現(xiàn)對每個學(xué)生答題數(shù)目按從上到下排列
for i=1:data_input_row
for j=i+1:data_input_row
if s_p_form(i,data_input_col + 2)<s_p_form(j,data_input_col + 2)
for i1=1:data_input_col + 2
temp=s_p_form(i,i1);
s_p_form(i,i1)=s_p_form(j,i1);
s_p_form(j,i1)=temp;
對學(xué)生和問題實現(xiàn)按照正答率由高至低順序排列的程序如上所示,基本思想是冒泡排序法,不再贅述。
(三)正確率相同的學(xué)生(或問題)的重新排序
for i=1:data_input_row
for j=i:data_input_row
if s_p_form(i,data_input_col + 2)==s_p_form(j,data_input_col + 2)
for k=1:data_input_col
if s_p_form(i,k)==0
S_left_sum=S_left_sum+s_p_form(data_input_row+2,k);
end
if s_p_form(j,k)==0
S_right_sum=S_right_sum+s_p_form(data_input_row+2,k);
if S_left_sum>S_right_sum
for l=1:data_input_col + 2
tem=s_p_form(i,l);
s_p_form(i,l)=s_p_form(j,l);
s_p_form(j,l)=tem;
end
……
對于正確率相同的行,即答對題目數(shù)相同的學(xué)生,按照“其得分矢量與問題的答對人數(shù)矢量之間的協(xié)方差大小”,自上而下排序,程序中先求得得分相同學(xué)生的得分即問題的答對人數(shù)之和,然后通過冒泡排序法實現(xiàn)。對于答對人數(shù)相同的問題,按“問題矢量與累計得分矢量之間的協(xié)方差大小自左至右排序”。
?。ㄋ模W(xué)生(問題)注意系數(shù)的求解
u1=mean(s_p_form(data_input_row+2,1:data_input_col),2);
for i=1:data_input_row
for j=1:data_input_col
if s_p_form(i,j)==1
c1=c1 +s_p_form(data_input_row + 2,j);
end
end
for j=1:s_p_form(i,data_input_col + 2)
c2=c2 + s_p_form(data_input_row + 2,j);
end
if c2-u1*s_p_form(i,data_input_col + 2)==0
s_p_form(i,data_input_col + 3)==0;
else
s_p_form(i,data_input_col+3)=1-(c1-u1*s_p_form(i,data_input_col+2))/(c2-u1*s_p_form(i,data_input_col + 2));
end
end
以上程序中,c1,c2,u1分別代表該同學(xué)所對應(yīng)的S曲線左側(cè)為“0”的人數(shù)之和,S曲線右側(cè)為“1”的人數(shù)之和,以及問題的平均答對人數(shù),得到相應(yīng)之和,依據(jù)注意系數(shù)的公式計算,把所有學(xué)生的注意系數(shù)放在S-P表多建的四列中的第三列。差異系數(shù)及問題注意系數(shù)實現(xiàn)原理相同,這里不再詳述。
參考文獻:
?。?]沈霄鳳.現(xiàn)代教育信息處理[M].上海:現(xiàn)代教育出版社,2008:258-266.
?。?]薛理銀.教育信息處理原理[M].北京:北京師范大學(xué)出版社,1995.
?。?]夏瑋,李朝暉,常春藤.控制系統(tǒng)仿真與實例詳解[M].北京:人民郵電出版社,2008:11-18.
[4]范云歡.數(shù)據(jù)挖掘技術(shù)在測試信息分析中的應(yīng)用[D].華東師范大學(xué),2009碩士學(xué)位論文.
?。?]傅德榮.教育信息處理[M].北京:北京師范大學(xué)出版社,2006:152.