實驗一:MATLAB檔案讀寫操作與資料預處理及描述性統計量計算
MATLAB檔案讀寫操作與資料預處理及描述性統計量計算
該程式為一些實驗報告的程式結果,主要是針對資料的相關描述統計。
1:使用readtable讀取資料,並將資料儲存為資料表
% 的資料計入Matlab工作區,以備後用;
filename
=
‘shiyanyishuju。xlsx’
;
data
=
readtable
(
filename
);
讀入的資料結果部分如下圖所示:
問題2:程式如下:
%% 箱線圖
boxplot(data{:,2:end},‘notch’,‘on’,‘labels’,{‘EXPE’,‘QUAL’,‘VALU’,‘SATI’},。。。
‘whisker’,2)
title(‘滿意度資料箱線圖’)
得到的箱線圖如下:
從箱線圖中可以看出:變數1數值小於等於5的資料為異常值,變數二、三、四資料小於等於二的資料為異常值
%% 兩兩配對散點圖
gplotmatrix(data{:,2:end},[],[],。。。
‘r’,‘o’,3,‘on’,‘hist’,{‘EXPE’,‘QUAL’,‘VALU’,‘SATI’},。。。
{‘EXPE’,‘QUAL’,‘VALU’,‘SATI’})
title(‘矩陣散點圖’)
剔除異常觀察資料;
% 從箱線圖中可以看出:變數一數值小於等於5的資料為異常值,
% 變數二、三、四資料小於等於二的資料為異常值
index = data{:,2} > 5 & data{:,3} > 2 & data{:,4} > 2 & data{:,5} > 2;
newdata = data(index,:); % 剔除異常值後的資料
sum(index) % 剔除異常值後總共資料條數
剔除資料後還剩下921條記錄
ans = 921
問題2:使用varfun函式,對資料集表中的每個變數進行相應的操作,程式和結果如下:
% 最小值
newdatamin = varfun(@min,newdata(:,2:end))
% 最大值
newdatamax = varfun(@max,newdata(:,2:end))
% 均值
newdatamean = varfun(@mean,newdata(:,2:end))
% 眾數
newdatamode = varfun(@mode,newdata(:,2:end))
% 中位數
newdatamedian = varfun(@median,newdata(:,2:end))
% 方差
newdatavar = varfun(@var,newdata(:,2:end))
% 標準差
newdatastd = varfun(@std,newdata(:,2:end))
結果:
newdatamin =
min_EXPE min_QUAL min_VALU min_SATI
________ ________ ________ ________
6 3 3 3
newdatamax =
max_EXPE max_QUAL max_VALU max_SATI
________ ________ ________ ________
10 10 10 10
newdatamean =
mean_EXPE mean_QUAL mean_VALU mean_SATI
_________ _________ _________ _________
8。2747 7。9088 7。6504 7。8132
newdatamode =
mode_EXPE mode_QUAL mode_VALU mode_SATI
_________ _________ _________ _________
8 8 8 8
newdatamedian =
median_EXPE median_QUAL median_VALU median_SATI
___________ ___________ ___________ ___________
8 8 8 8
newdatavar =
var_EXPE var_QUAL var_VALU var_SATI
________ ________ ________ ________
1。1212 1。5917 1。7581 1。6955
newdatastd =
std_EXPE std_QUAL std_VALU std_SATI
________ ________ ________ ________
1。0589 1。2616 1。3259 1。3021
計算變數之間的方差和相關係數
% 變數協方差
cov(newdata{:,2:end})
ans =
1。1212 0。7088 0。6614 0。6666
0。7088 1。5917 1。0083 1。0906
0。6614 1。0083 1。7581 1。2172
0。6666 1。0906 1。2172 1。6955
% 變數相關係數
corr(newdata{:,2:end})
ans =
1。0000 0。5306 0。4711 0。4835
0。5306 1。0000 0。6028 0。6639
0。4711 0。6028 1。0000 0。7050
0。4835 0。6639 0。7050 1。0000
% 幾何平均
newdatageomean = varfun(@geomean,newdata(:,2:end))
% 調和平均
newdataharmmean = varfun(@harmmean,newdata(:,2:end))
% 極差
newdatarange = varfun(@range,newdata(:,2:end))
newdatageomean =
geomean_EXPE geomean_QUAL geomean_VALU geomean_SATI
____________ ____________ ____________ ____________
8。2049 7。798 7。5259 7。6901
newdataharmmean =
harmmean_EXPE harmmean_QUAL harmmean_VALU harmmean_SATI
_____________ _____________ _____________ _____________
8。1328 7。6734 7。3891 7。5455
newdatarange =
range_EXPE range_QUAL range_VALU range_SATI
__________ __________ __________ __________
4 7 7 7
% 絕對平均偏差
newdatamad = varfun(@mad,newdata(:,2:end))
% 四分位數極差
newdataiqr = varfun(@iqr,newdata(:,2:end))
newdatamad =
mad_EXPE mad_QUAL mad_VALU mad_SATI
________ ________ ________ ________
0。85914 0。94503 1。0756 0。9906
newdataiqr =
iqr_EXPE iqr_QUAL iqr_VALU iqr_SATI
________ ________ ________ ________
1 2 2 2
% 分為數
quantile(newdata{:,2:end},[0。025,0。25,。5,。75,。975],1)
ans =
6 5 5 5
8 7 7 7
8 8 8 8
9 9 9 9
10 10 10 10
計算標準變換系數
% 中心矩
moment(newdata{:,2:end},3)
% 偏度
skewness(newdata{:,2:end})
% 峰度
kurtosis(newdata{:,2:end})
% 便相關係數
partialcorr(newdata{:,2:end})
ans =
-0。1739 -1。0039 -0。7776 -1。3812
ans =
-0。1467 -0。5008 -0。3341 -0。6266
ans =
2。5663 3。2753 2。8462 3。6709
ans =
1。0000 0。2823 0。1402 0。1107
0。2823 1。0000 0。2017 0。3713
0。1402 0。2017 1。0000 0。4873
0。1107 0。3713 0。4873 1。0000