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