主成分分析
matlab 读 csv 文件
文件:最后读取成功的 csv 是这样:逗号分隔,行末就是换行,无分号。
路网密度,道路面积率,车流量,行车速度,道路服务等级,路口饱和度,出入口连接方式
7.37,0.068,282,20,3,0.97,2
10.45,0.144,450,25,4,1.11,1
6.46,0.0982,365,20,3,0.92,2
11.24,0.1865,737,30,1,0.42,3
11.38,0.2457,751,35,1,0.31,4
11.1,0.203,645,30,2,0.64,3
9.34,0.145,683,25,3,0.86,2
11.18,0.1824,700,30,2,0.73,2
读取:file=csvread('D:\sylvia_modeling\2016b1data1.csv',1,0)
,从第 1 行 0 列开始读(你家 matlab 竟然有个地方从 0 开始数数?感动极了)
标准化
>> standard=zscore(file)
standard =
-1.2721 -1.5840 -1.6081 -1.2964 0.5893 0.8148 -0.4093
0.3304 -0.2625 -0.6911 -0.3536 1.5321 1.3218 -1.5009
-1.7456 -1.0589 -1.1551 -1.2964 0.5893 0.6337 -0.4093
0.7414 0.4764 0.8754 0.5893 -1.2964 -1.1769 0.6822
0.8143 1.5057 0.9518 1.5321 -1.2964 -1.5752 1.7738
0.6686 0.7633 0.3732 0.5893 -0.3536 -0.3802 0.6822
-0.2471 -0.2452 0.5806 -0.3536 0.5893 0.4164 -0.4093
0.7102 0.4051 0.6734 0.5893 -0.3536 -0.0543 -0.4093
可是作者的里面都是正的……不管了,下一步。
相关系数矩阵
Q=corrcoef(standard)
Q =
1.0000 0.8878 0.8346 0.9114 -0.5603 -0.6082 0.4223
0.8878 1.0000 0.8882 0.9831 -0.7267 -0.8079 0.7038
0.8346 0.8882 1.0000 0.8874 -0.7262 -0.7746 0.5993
0.9114 0.9831 0.8874 1.0000 -0.7778 -0.8365 0.7167
-0.5603 -0.7267 -0.7262 -0.7778 1.0000 0.9779 -0.9005
-0.6082 -0.8079 -0.7746 -0.8365 0.9779 1.0000 -0.9402
0.4223 0.7038 0.5993 0.7167 -0.9005 -0.9402 1.0000
这里和作者的结果又一样了。
后面分析
[COEFF, LATENT, EXPLAINED]=pcacov(Q)
%coeff每列是一个主成分对应的特征向量,latent是特征根,explained是贡献率
这篇文章拿了国一,可是模型出奇地简单……第二部分直接用最简单的 Greenshield
模型,一个不等式就完事了,第三部分直接没有计算,用 vissim 做了一个仿真视频,再后面灵敏度分析根据不同的累积贡献率画了个简单的图,后面我什么都没看到就结束了,我怀疑自己下载了假的论文么……
虽然不喜欢 matlab 的语言,(人家毕竟只是个软件,网上的源码还都是非码农写的,如果我按照写代码的习惯加空格,还容易出乱子,吓得我只能写最丑的)但是毕竟功能这么强大,只要能搜到合适的函数基本上都是一句话的事,还是要安下心好好用一下的呢~
再次表白 vs code,查找与替换用习惯之后简直上瘾了……