uniapp无法使用substr_关公战秦琼------Excel、SPSS Modler和R的使用对比(下)
5. 數(shù)據(jù)可視化
Excel
在Excel中對(duì)數(shù)據(jù)可視化除常用的圖表外,還有樣式、迷你圖等直接和實(shí)際數(shù)據(jù)來共同展示效果。另外,還可以與切片器、PowerView等功能結(jié)合來動(dòng)態(tài)可視化。Excel中圖表的類型很多,如常見的散點(diǎn)圖、折線圖、柱形圖、餅圖等,但是遺憾的是沒有熱力圖,我們可以借助條件格式來設(shè)定不同值的樣式,進(jìn)而達(dá)到類似熱力圖的效果。
首先,我們利用數(shù)據(jù)透視表將前面生成的數(shù)據(jù)透視成風(fēng)速-對(duì)風(fēng)角兩兩相對(duì)的矩陣形式并以功率比值來填充,然后在條件格式中設(shè)定最大值、最小值以及中間值的顏色,來呈現(xiàn)數(shù)值大小所對(duì)應(yīng)的色階。如圖所示,可以看出大部分的最大值(紅色)不處于名義對(duì)風(fēng)角為0的位置,說明存在對(duì)風(fēng)的偏差;同時(shí)也可以看出,不同風(fēng)速下的最大值位置也并不完全一致。 我們可以直接取其平均最大值處作為整體偏差(如圖中
處),也可以分別求出最大值偏差位置,然后平均,等等有許多簡(jiǎn)化的方法。進(jìn)一步的,我們可以選取其中一個(gè)風(fēng)速區(qū)間,作它的散點(diǎn)圖或拆線圖(具體步驟省略)。從圖中可以看出,實(shí)際結(jié)果會(huì)存在一些波動(dòng),我們也可以先平滑或者擬合成曲線后,再取極值來作為偏差所在的位置,這樣可以利用更多數(shù)據(jù)的信息,減少異常值的影響。Excell可擬合的曲線有限,可以嘗試選取比較后確定或者結(jié)合泰勒公式來處理(如本文可以對(duì)功率開立方后,按余弦展開式特點(diǎn)選用最大次數(shù)為偶數(shù)的多項(xiàng)式來擬合)。
Modeler
Modeler中可視化的方法不多,圖表的類型也較少,也沒有熱力圖。可以利用矩陣節(jié)點(diǎn)來達(dá)到類型Excel透視后的效果,但無法進(jìn)行格式展示,只能Highlight top和bottom幾個(gè)值(設(shè)置過程省略),粗略可以看出最大值也不在名義角度
處。拆線圖可以利用線圖結(jié)點(diǎn)來選擇相應(yīng)的字段即可,也可以利用其它字段來區(qū)分不同的面板、顏色、圖標(biāo)等。相比Excel需要分別手工插入圖表并定義不同的單元格范圍,簡(jiǎn)便了不少。但是Modeler只能對(duì)數(shù)據(jù)平滑,無法直接在圖中對(duì)數(shù)據(jù)擬合。
R
用R作圖則是最為靈活和強(qiáng)大的,尤其是配合ggplot2作圖包(及其各種衍生包)。可以直接用熱力圖的函數(shù)來作圖,并自由的定義各種元素,但同時(shí)也可以看出,前提是要熟悉這些函數(shù)和參數(shù)的定義和用法,增加了學(xué)習(xí)掌握的門檻,不像上面兩個(gè)軟件那樣操作簡(jiǎn)單直觀。
library(ggplot2) gg0 = ggplot(BinData, aes(x=Bin_Angle, y=Bin_Speed, fill=Power_Ratio))+geom_tile()+guides(fill=F)+theme(plot.title=element_text(hjust=0.5))+xlab('Misalignment Angle')+ylab("Wind Speed")+labs(title="Power Coefficient")+scale_fill_gradient2(low="#66bd63", high="#f46d43",mid="#ffffbf",midpoint =0.9)+geom_text(aes(label=substr(as.character(round(Power_Ratio,2)),1,4)), angle=0,size=3) print(gg0)我們使用階梯圖函數(shù)來繪制單一風(fēng)速區(qū)間下的功率與名義對(duì)風(fēng)角的關(guān)系,同時(shí)在每二坐標(biāo)軸上繪制風(fēng)頻在名義對(duì)風(fēng)角上的分布。從圖中可以看出,風(fēng)頻(次數(shù)或時(shí)間)最大位置并不對(duì)應(yīng)功率的最大位置,這就是產(chǎn)生能量損失的直接原因,我們要做的修正就是,將功率折線向左移動(dòng),使功率最大的位置所處的時(shí)間更長(zhǎng),平移前后功率與風(fēng)頻乘積和的差異就是所提高的發(fā)電量。但功率折線左移后,最左邊位置是沒有功率數(shù)據(jù)的,因此我們要量化這個(gè)差異或者找到最優(yōu)平移量,就需要對(duì)功率擬合后進(jìn)行外推。
SpeedData = BinData[BinData$Bin_Speed==5,] ratio = 10 shift = -200 gg1 = ggplot()+scale_y_continuous( "Power",sec.axis = sec_axis(~.*ratio+shift*ratio, name = "Count"))+coord_cartesian(xlim=c(-12, 12))+xlab("Yaw Angle")+geom_step(data=SpeedData, aes(x=Bin_Angle-1, y=Power,colour="A"))+geom_step(data=SpeedData, aes(x=Bin_Angle-1, y=State/ratio-shift,colour="B"))+theme(legend.position = "bottom",legend.title = element_blank())+scale_color_manual(values = c("red","blue"),labels=c("Power","Count")) print(gg1)6. 數(shù)據(jù)建模
如果說前面步驟三種軟件還能殊途同歸,實(shí)現(xiàn)共同的目標(biāo)結(jié)果,數(shù)據(jù)建模則只能分道揚(yáng)鑣、各行其道。EXCEL應(yīng)用廣泛,財(cái)經(jīng)統(tǒng)計(jì)、工程計(jì)量、信息管理等等各行各業(yè)都不可或缺;相應(yīng)功能也多種多樣,數(shù)據(jù)存儲(chǔ)、回歸擬合、抽樣檢驗(yàn)、規(guī)劃求解、信號(hào)分析等皆有涉獵。但是每項(xiàng)大概只以20%功能實(shí)現(xiàn)80%的需求為目標(biāo),并不能做到深入全面。Modeler只針對(duì)數(shù)據(jù)分析建模,考慮到與SPSS Statistics的互補(bǔ),基本只集中于機(jī)器學(xué)習(xí)類的模型,模型擴(kuò)展性不足。而R作為開放性語言,幾乎可以實(shí)現(xiàn)任何建模的需求,也可以很方便的進(jìn)行模型創(chuàng)新,但對(duì)于普通人應(yīng)用來說,大多數(shù)需要利用現(xiàn)成的包,目前主要是集中于數(shù)據(jù)統(tǒng)計(jì)分析建模,機(jī)器學(xué)習(xí)類的也有不少且在不斷擴(kuò)充中,但相對(duì)Python的scikit-learn、TensorFlow、pytorch等庫(kù)的用戶要少的多。
6.1 曲線擬合
首先在不同的風(fēng)速區(qū)間下,擬合功率與名義對(duì)風(fēng)角度的關(guān)系,求出各自的偏差值。
Excel
如上文可視化所介紹,Excel可以添加趨勢(shì)線的方式對(duì)曲線進(jìn)行多項(xiàng)式擬合,但是所能擬合的曲線類別有限,如背景介紹的公式是無法實(shí)現(xiàn)的。因此,我們需要借助一些專業(yè)知識(shí)來實(shí)現(xiàn),比如信號(hào)處理技術(shù)。無法用傅里葉變換(雖然EXCEL有此功能,但是采樣點(diǎn)不夠半個(gè)周期),可以用三點(diǎn)法(對(duì)正弦信號(hào)進(jìn)行三點(diǎn)采樣,可計(jì)算得到其周期、幅值和相位)來擬合。為簡(jiǎn)化介紹,取背景公式中n為已知數(shù),而周期也是已知的,因此只需兩點(diǎn)即可。假設(shè)在名義對(duì)風(fēng)角0度兩側(cè)相差
的對(duì)稱兩點(diǎn)的功率值 ,則由背景公式:展開后可得:
進(jìn)而得到:
在EXCEL中利用函數(shù)寫入上述公式并引用對(duì)應(yīng)數(shù)值即可求出結(jié)果。進(jìn)一步,可求出無偏差時(shí)的最大功率
。任意兩點(diǎn)都可利用此公式計(jì)算出一個(gè)偏差值,按中位數(shù)選取即可。如果n為未知數(shù)時(shí),也可以推導(dǎo)出偏差值的顯式計(jì)算公式,大家有興趣的嘗試一下。
Modeler
Modeler中同樣無法擬合三角函類型的曲線,而且也不方便像Excel一樣直接在表格中進(jìn)行公式計(jì)算,這里利用導(dǎo)數(shù)性質(zhì)來計(jì)算,同樣取n為常數(shù)3,由功率與名義對(duì)風(fēng)角度的公式可以得到:
因此我們只要求出在某點(diǎn)
處的導(dǎo)數(shù) ,結(jié)合 處功率值 即可求出 值:因此,我們可以在Modeler中選取名義對(duì)風(fēng)角度0度兩側(cè)較小范圍的數(shù)據(jù),對(duì)不同風(fēng)速區(qū)間的功率開立方值和對(duì)風(fēng)角度弧度值,利用Regression節(jié)點(diǎn)進(jìn)行線性擬合。
R
用R來擬合曲線則非常輕松簡(jiǎn)單:
expre <- "Power~P*(cos(Bin_Angle*pi/180+g))^n" out <- nls(expre,data=SpeedData,start=list(P=400,g=0,n=3),weights = State) out$m$getPars()6.2 優(yōu)化求解
根據(jù)求出的不同偏差值,來計(jì)算最優(yōu)的統(tǒng)一修正值,目標(biāo)是使得修正后的發(fā)電量最大。
Excel
將求得的不同風(fēng)速下的功率和誤差值整理如圖,并可以計(jì)算考慮修正值(D16單元格)時(shí)的功率結(jié)果:
D10=$B10*POWER(COS(RADIANS(D$9-$C10+$D$16)),3)功率乘以相應(yīng)的頻次(不考慮時(shí)間單位)則可得總的發(fā)電量計(jì)算公式:
E16=SUMPRODUCT(D3:N5,D10:N12)/6選擇“模擬分析"菜單中的"單變量求解"功能,以“E16”為目標(biāo)單元格,以”D16"為可變單元格,目標(biāo)值可設(shè)為比當(dāng)前值大些的值,多次調(diào)整后即可得滿意結(jié)果,如圖所示。
Modeler
優(yōu)化求解對(duì)于Modeler來說和曲線擬合類似,屬于其盲區(qū)之外,為對(duì)比的完整性,這里使用一個(gè)略笨的方法。
R
fn.prod<-function(delta,Angle,Err,MaxP,n,Count) {b=(Angle-Err+delta)*pi/180c=(cos(b))^n*MaxP*Count/6return(sum(c)) } fn<-function(delta){fn.prod(delta,data$Angle,data$g,data$P,3,data$Records)} opt<-optimize(fn,interval=0.1,lower=-10,upper=10,maximum=TRUE) print(opt)7. 總結(jié)
7.1 數(shù)據(jù)導(dǎo)入
從可導(dǎo)入的文件類型來看,除通用的文本類數(shù)據(jù)和ODBC數(shù)據(jù)外,Excle主要支持的為微軟同門的如Access、SQLServer等數(shù)據(jù)來源。Modeler則除上面提到文件/數(shù)據(jù)庫(kù)外,還可以支持一些統(tǒng)計(jì)軟件格式數(shù)據(jù)如IBM同門的Statistics、COngnos BI及其對(duì)手SAS等。R則除可輕松導(dǎo)入上面提到的數(shù)據(jù)文件/庫(kù)外,借助各種包,其它的數(shù)據(jù)庫(kù)/文件,肯定也不在話下。
從操作步驟來看,Excel更多借助手工操作,對(duì)批量導(dǎo)入多文件不太友好,除非用VBA代碼實(shí)現(xiàn)循環(huán)。Modeler利用相應(yīng)節(jié)點(diǎn),設(shè)定簡(jiǎn)單直觀,批量導(dǎo)入只需復(fù)制即可,但數(shù)量較多時(shí)也略嫌繁瑣。R則可以通過循環(huán)代碼實(shí)現(xiàn),實(shí)現(xiàn)后代碼幾乎不用隨文件增多而改變。
7.2 數(shù)據(jù)處理
從數(shù)據(jù)處理的過程來看,Excel數(shù)據(jù)與操作同一界面出現(xiàn),便于直觀處理,入手輕松。對(duì)于列數(shù)據(jù)的處理計(jì)算通過函數(shù)和位置的引用,非常方便;但對(duì)于行數(shù)據(jù)的處理(篩選、聚合等)則更多依靠手工選擇或數(shù)組公式,略顯復(fù)雜,數(shù)據(jù)更新時(shí)較難自動(dòng)更新。
Modeler采用數(shù)據(jù)流類操作,界面直觀。行、列數(shù)據(jù)的處理都有不同的節(jié)點(diǎn),可以靈活方便的使用,數(shù)據(jù)和流程分離,數(shù)據(jù)更新后,可不用修改直接運(yùn)行,很適合商業(yè)場(chǎng)合定期分析的需要。但如果沒有相應(yīng)的節(jié)點(diǎn)或函數(shù)支持的功能,則較難擴(kuò)展實(shí)現(xiàn)。
R語言作為編程類語言,入手的門檻較高,熟悉后則應(yīng)用方便,尤其各種包的應(yīng)用,可將許多復(fù)雜問題簡(jiǎn)單化,而且可按自己的想法編程實(shí)現(xiàn),擴(kuò)展功能或者探索創(chuàng)新。
7.3 數(shù)據(jù)可視化
Excel文件打開本身就是將數(shù)據(jù)展示在眼前。選中數(shù)據(jù)則可以輕松插入圖表,靈活調(diào)節(jié)各視覺元素,簡(jiǎn)單易用,地球人都知道。Modeler的圖表節(jié)點(diǎn)可設(shè)定內(nèi)容更多操作也略復(fù)雜,但結(jié)果的呈現(xiàn)較專業(yè),唯一不足的是除給定的節(jié)點(diǎn)外,無法做出其它的圖。R的圖表尤其是ggplot2包,幾乎可以實(shí)現(xiàn)任何圖表,修改任何表中元素,堪稱完美,除了前面所說的,使用掌握的門檻較高。
7.4 數(shù)據(jù)建模
Excel 可建模型廣度較廣但深度略淺,就本文要擬合的方程來說,是無法直接實(shí)現(xiàn)的,只能通過推導(dǎo)出顯式公式后來求解,最后的優(yōu)化問題也是通過單變量求解試算來手工實(shí)現(xiàn)。
Modeler的機(jī)器學(xué)習(xí)模型更多更深,但本文的需求并不對(duì)其路數(shù),也只能推導(dǎo)到直線擬合問題才能實(shí)現(xiàn),后面的優(yōu)化問題也只能通過暴力窮舉法才達(dá)成求解。
R語言則可以很輕松實(shí)現(xiàn)本文所要擬合的方程和要優(yōu)化求解的數(shù)值,當(dāng)然這離不開借助可適用的函數(shù)或包。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的uniapp无法使用substr_关公战秦琼------Excel、SPSS Modler和R的使用对比(下)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nginx 上传文件漏洞_文件上传及解析
- 下一篇: lumion自动保存_LUMION吊打M