uniapp无法使用substr_关公战秦琼------Excel、SPSS Modler和R的使用对比(下)

3be5ee07ad4887a7380e3ca63c404493.png

5. 数据可视化

Excel

在Excel中对数据可视化除常用的图表外,还有样式、迷你图等直接和实际数据来共同展示效果。另外,还可以与切片器、PowerView等功能结合来动态可视化。Excel中图表的类型很多,如常见的散点图、折线图、柱形图、饼图等,但是遗憾的是没有热力图,我们可以借助条件格式来设定不同值的样式,进而达到类似热力图的效果。

首先,我们利用数据透视表将前面生成的数据透视成风速-对风角两两相对的矩阵形式并以功率比值来填充,然后在条件格式中设定最大值、最小值以及中间值的颜色,来呈现数值大小所对应的色阶。如图所示,可以看出大部分的最大值(红色)不处于名义对风角为0的位置,说明存在对风的偏差;同时也可以看出,不同风速下的最大值位置也并不完全一致。 我们可以直接取其平均最大值处作为整体偏差(如图中

处),也可以分别求出最大值偏差位置,然后平均,等等有许多简化的方法。

e2cf286ad2eb826be0433bc942259e91.png

进一步的,我们可以选取其中一个风速区间,作它的散点图或拆线图(具体步骤省略)。从图中可以看出,实际结果会存在一些波动,我们也可以先平滑或者拟合成曲线后,再取极值来作为偏差所在的位置,这样可以利用更多数据的信息,减少异常值的影响。Excell可拟合的曲线有限,可以尝试选取比较后确定或者结合泰勒公式来处理(如本文可以对功率开立方后,按余弦展开式特点选用最大次数为偶数的多项式来拟合)。

8c316edf6781e5330be6d576ab93edbf.png

Modeler

Modeler中可视化的方法不多,图表的类型也较少,也没有热力图。可以利用矩阵节点来达到类型Excel透视后的效果,但无法进行格式展示,只能Highlight top和bottom几个值(设置过程省略),粗略可以看出最大值也不在名义角度

处。

bea36f7f2b9bf31aaa2d8a28f37c8ccb.png

拆线图可以利用线图结点来选择相应的字段即可,也可以利用其它字段来区分不同的面板、颜色、图标等。相比Excel需要分别手工插入图表并定义不同的单元格范围,简便了不少。但是Modeler只能对数据平滑,无法直接在图中对数据拟合。

9989f38bd026d5fac10d59e64a951ff4.png

R

用R作图则是最为灵活和强大的,尤其是配合ggplot2作图包(及其各种衍生包)。可以直接用热力图的函数来作图,并自由的定义各种元素,但同时也可以看出,前提是要熟悉这些函数和参数的定义和用法,增加了学习掌握的门槛,不像上面两个软件那样操作简单直观。

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)

9a0cd05f0b8cc23b7f841c2eefc73ce3.png

我们使用阶梯图函数来绘制单一风速区间下的功率与名义对风角的关系,同时在每二坐标轴上绘制风频在名义对风角上的分布。从图中可以看出,风频(次数或时间)最大位置并不对应功率的最大位置,这就是产生能量损失的直接原因,我们要做的修正就是,将功率折线向左移动,使功率最大的位置所处的时间更长,平移前后功率与风频乘积和的差异就是所提高的发电量。但功率折线左移后,最左边位置是没有功率数据的,因此我们要量化这个差异或者找到最优平移量,就需要对功率拟合后进行外推。

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)

38cfd4bea5bc8f2f380d41a41f1f329f.png

6. 数据建模

如果说前面步骤三种软件还能殊途同归,实现共同的目标结果,数据建模则只能分道扬镳、各行其道。EXCEL应用广泛,财经统计、工程计量、信息管理等等各行各业都不可或缺;相应功能也多种多样,数据存储、回归拟合、抽样检验、规划求解、信号分析等皆有涉猎。但是每项大概只以20%功能实现80%的需求为目标,并不能做到深入全面。Modeler只针对数据分析建模,考虑到与SPSS Statistics的互补,基本只集中于机器学习类的模型,模型扩展性不足。而R作为开放性语言,几乎可以实现任何建模的需求,也可以很方便的进行模型创新,但对于普通人应用来说,大多数需要利用现成的包,目前主要是集中于数据统计分析建模,机器学习类的也有不少且在不断扩充中,但相对Python的scikit-learn、TensorFlow、pytorch等库的用户要少的多。

6.1 曲线拟合

首先在不同的风速区间下,拟合功率与名义对风角度的关系,求出各自的偏差值。

Excel

4b2b3df4db8db49a0f89b3b1b80c7edb.png

如上文可视化所介绍,Excel可以添加趋势线的方式对曲线进行多项式拟合,但是所能拟合的曲线类别有限,如背景介绍的公式是无法实现的。因此,我们需要借助一些专业知识来实现,比如信号处理技术。无法用傅里叶变换(虽然EXCEL有此功能,但是采样点不够半个周期),可以用三点法(对正弦信号进行三点采样,可计算得到其周期、幅值和相位)来拟合。为简化介绍,取背景公式中n为已知数,而周期也是已知的,因此只需两点即可。假设在名义对风角0度两侧相差

的对称两点的功率值
,则由背景公式:

展开后可得:

进而得到:

在EXCEL中利用函数写入上述公式并引用对应数值即可求出结果。进一步,可求出无偏差时的最大功率

。任意两点都可利用此公式计算出一个偏差值,按中位数选取即可。

如果n为未知数时,也可以推导出偏差值的显式计算公式,大家有兴趣的尝试一下。

Modeler

Modeler中同样无法拟合三角函类型的曲线,而且也不方便像Excel一样直接在表格中进行公式计算,这里利用导数性质来计算,同样取n为常数3,由功率与名义对风角度的公式可以得到:

因此我们只要求出在某点

处的导数
,结合
处功率值
即可求出
值:

因此,我们可以在Modeler中选取名义对风角度0度两侧较小范围的数据,对不同风速区间的功率开立方值和对风角度弧度值,利用Regression节点进行线性拟合。

9df1749d4c7167d94ceaaa1a36c01c59.png

R

用R来拟合曲线则非常轻松简单:

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()

dcc8d2177d5ba9a42a5bcd7c52fb8ff6.png

6.2 优化求解

根据求出的不同偏差值,来计算最优的统一修正值,目标是使得修正后的发电量最大。

Excel

2c7317b326dacfe97f5270b850c216de.png

将求得的不同风速下的功率和误差值整理如图,并可以计算考虑修正值(D16单元格)时的功率结果:

D10=$B10*POWER(COS(RADIANS(D$9-$C10+$D$16)),3)

功率乘以相应的频次(不考虑时间单位)则可得总的发电量计算公式:

E16=SUMPRODUCT(D3:N5,D10:N12)/6

选择“模拟分析"菜单中的"单变量求解"功能,以“E16”为目标单元格,以”D16"为可变单元格,目标值可设为比当前值大些的值,多次调整后即可得满意结果,如图所示。

Modeler

优化求解对于Modeler来说和曲线拟合类似,属于其盲区之外,为对比的完整性,这里使用一个略笨的方法。

d10a28b94e13aa4dace395240daa2a35.png

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)

6b497f8e817683b9ebf954826b2e2b1e.png

7. 总结

7.1 数据导入

从可导入的文件类型来看,除通用的文本类数据和ODBC数据外,Excle主要支持的为微软同门的如Access、SQLServer等数据来源。Modeler则除上面提到文件/数据库外,还可以支持一些统计软件格式数据如IBM同门的Statistics、COngnos BI及其对手SAS等。R则除可轻松导入上面提到的数据文件/库外,借助各种包,其它的数据库/文件,肯定也不在话下。

从操作步骤来看,Excel更多借助手工操作,对批量导入多文件不太友好,除非用VBA代码实现循环。Modeler利用相应节点,设定简单直观,批量导入只需复制即可,但数量较多时也略嫌繁琐。R则可以通过循环代码实现,实现后代码几乎不用随文件增多而改变。

7.2 数据处理

从数据处理的过程来看,Excel数据与操作同一界面出现,便于直观处理,入手轻松。对于列数据的处理计算通过函数和位置的引用,非常方便;但对于行数据的处理(筛选、聚合等)则更多依靠手工选择或数组公式,略显复杂,数据更新时较难自动更新。

Modeler采用数据流类操作,界面直观。行、列数据的处理都有不同的节点,可以灵活方便的使用,数据和流程分离,数据更新后,可不用修改直接运行,很适合商业场合定期分析的需要。但如果没有相应的节点或函数支持的功能,则较难扩展实现。

R语言作为编程类语言,入手的门槛较高,熟悉后则应用方便,尤其各种包的应用,可将许多复杂问题简单化,而且可按自己的想法编程实现,扩展功能或者探索创新。

7.3 数据可视化

Excel文件打开本身就是将数据展示在眼前。选中数据则可以轻松插入图表,灵活调节各视觉元素,简单易用,地球人都知道。Modeler的图表节点可设定内容更多操作也略复杂,但结果的呈现较专业,唯一不足的是除给定的节点外,无法做出其它的图。R的图表尤其是ggplot2包,几乎可以实现任何图表,修改任何表中元素,堪称完美,除了前面所说的,使用掌握的门槛较高。

7.4 数据建模

Excel 可建模型广度较广但深度略浅,就本文要拟合的方程来说,是无法直接实现的,只能通过推导出显式公式后来求解,最后的优化问题也是通过单变量求解试算来手工实现。

Modeler的机器学习模型更多更深,但本文的需求并不对其路数,也只能推导到直线拟合问题才能实现,后面的优化问题也只能通过暴力穷举法才达成求解。

R语言则可以很轻松实现本文所要拟合的方程和要优化求解的数值,当然这离不开借助可适用的函数或包。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356246.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第三次预作业20155231邵煜楠:虚拟机上的Linux学习

java第三次预作业——虚拟机初体验(学习记录) 学习在笔记本上安装Linux操作系统通过老师给予的官网链接&#xff0c;下载了VirtualBox-5.1.14-112924-win和Ubuntu-16.04-desktop-amd64.iso开始按照安装&#xff0c;尽管如此&#xff0c;还是遇到来了一些问题。 -在选择虚拟机的…

miui11未升级android版本,MIUI 11稳定版正式推送,升级前你需要了解

原标题&#xff1a;MIUI 11稳定版正式推送&#xff0c;升级前你需要了解10月18日&#xff0c;MIUI官网正式宣布MIUI 11 正式推送&#xff0c;这是在小米MIX Alpha发布会之时同时推出的&#xff0c;在经过内测、公测后正式面向大众消费者推送。以下是一些您升级前需要了解的东西…

lumion自动保存_LUMION吊打MAX,轻松玩转规划渲染!

--文末获取&#xff1a;城市配景建筑模型包--大型场景渲染是LUMION渲染中难度最高的图纸首先&#xff0c;需要大量非常优质的配景包括&#xff1a;配景建筑、植物其次&#xff0c;对硬件要求也极高像这样的图纸渲染主体建筑周边需要布置大量的配景建筑没有个2080TI&#xff0c;…

在地图上 添加柱状_如何做出一份惊艳的PPT地图页?这2个字,你一定要知道!...

这篇文章&#xff0c;咱们就从一个读者私信给我的案例来说&#xff0c;就是这张PPT&#xff1a;他当时问我的问题是&#xff0c;怎么把这个表格优化的更美观&#xff1f;坦白讲&#xff0c;这是一个无解的问题&#xff0c;为什么这么说呢&#xff1f;咱们简单对这个图表分析&am…

akka与neety_Akka STM –与STM Ref和Agent一起打乒乓球

akka与neety乒乓是一个经典示例&#xff0c;其中2个玩家&#xff08;或线程&#xff09;访问共享资源–乒乓表并在彼此之间传递Ball&#xff08;状态变量&#xff09;。 使用任何共享资源&#xff0c;除非我们同步访问&#xff0c;否则线程可能会遇到潜在的死锁情况。 PingPong…

怎样调用另一个html中的元素,html – 使用DIV作为另一个元素的背景

这里我用2个div做了一个例子&#xff1a;> .content,包含前端所需的一切> .background – 包含文本,图像和背景中的所有其他内容要将一个div包装在另一个div上(制作叠加层),你必须将它们放入相同的元素中,在本例中它是#wrapper div.放置位置&#xff1a;包装的相对宽度/高…

在running android lint期间发生了内部错误.,Eclipse出现quot;Running Android Lint has encountered a problemquot...

近期打开Eclipse的时候&#xff0c;总是发生这种一个错误&#xff1a;"Running Android Lint has encountered a problem"。截图例如以下&#xff1a;。可是Eclipse能够正常执行程序。不会造成其它影响。可是每次打开Eclipse时。总是看到这个警告&#xff0c;心情会非…

idea 导出war包_使用IDEA实现远程代码DEBUG调试教程详解

我们在使用 IDEA DEBUG调试代码的时候&#xff0c;常常见到控制台会输出一句这样的话&#xff1a;「Connected to the target VM, address: 127.0.0.1:62981, transport: socket」&#xff0c;所以即使代码不在本地运行&#xff0c;只要JVM打开调试模式&#xff0c;并且网络能够…

鸿蒙os2.0发布回放,华为HarmonyOS 2.0系统发布会内容大全 鸿蒙os6月2日直播回放地址入口...

华为鸿蒙os6月2日直播回放在哪里看&#xff1f;华为HarmonyOS 2系统发布会说了些啥&#xff1f;HarmonyOS 2系统在6月2日正式发布了&#xff0c;之前预约过的小伙伴现在就可以更新体验了&#xff0c;这次发布将会对安卓系统一个重大的革新&#xff0c;将会彻底颠覆之前的安卓系…

python中当地时间_R 与 Python 中与时间相关内容的梳理

约万字长文预警&#xff0c;如果你没时间&#xff0c;就不用看了&#xff0c;这就是一个梳理的文章&#xff0c;方便我后来找资料。因为工作的关系&#xff0c;近期需要梳理一些 Python 的知识(可能有小伙伴知道了&#xff0c;LI-6800 搞了个大动作&#xff0c;支持 Python 编程…

JavaOne 2015:为JDK 9做准备– blog @ CodeFX

JavaOne 2015看到了Project Jigsaw团队关于Java 9中的模块化的一系列讨论 。它们都是非常有趣的&#xff0c;并且充满了宝贵的信息&#xff0c;我敦促每个Java开发人员都注意它们。 除此之外&#xff0c;我想给社区一种搜索和引用它们的方法&#xff0c;因此我在这里总结一下&…

华为oj----iNOC产品部-杨辉三角的变形 .

此题提供三种方法&#xff0c;第一种&#xff0c;一开始就能想到的&#xff0c;设置一个足够大的数组存储生成的杨辉三角&#xff0c;然后进行判断就行,此方法参见&#xff1a;华为oj iNOC产品部-杨辉三角的变形 另一种方法是采用递归&#xff1a; 三角形的每行的个数为2*n-1,n…

java 短路判断_java中和的区别(|和|同理)

在java的基础面试题中肯定有这个问题&#xff1a;&和&&的区别&#xff1f;这个问题很好回答&#xff0c;核心思想就是一个不短路一个短路的问题。首先说下&&#xff0c;1、它可以表示二进制中的位运算分析&#xff1a;二元操作符&#xff0c;操作两个二进制数据…

不属于计算机完成科学特点的是,2020年9月网络教育统考计算机应用基础模拟题试卷4...

2020年9月网络教育统考计算机应用基础模拟题试卷4一、单选题1.______是第四代计算机的典型代表。A.微型机B.超小型机C.巨型机D.大中型机答案&#xff1a;A2.个人计算机又称PC机&#xff0c;这种计算机属于______。A.微型计算机B.小型计算机C.超级计算机D.巨型计算机答案&#x…

苹果13系统锁屏延迟_iPhone 11 锁屏出现延迟是怎么回事?

正常情况下&#xff0c;按下 iPhone 电源键&#xff0c;屏幕会立即息灭&#xff0c;有不少用户反馈按下锁屏键后&#xff0c;会有片刻的延迟才能关屏&#xff0c;虽然延迟并不是很长&#xff0c;但会给人造成“卡顿”的假象。很多人把原因归结为 iOS 13 系统&#xff0c;其实并…

html中img引入git动画,用Github五万颗星的css动画库, 为网页增添趣味性

css动画可以做到什么程度?Github上有一个非常优秀的动画项目, 足足有5万颗星!在线效果展示:animate整个项目只有一个css文件, 使用方法也非常简单, 只要给相应的元素添加class属性即可通过悬浮产生动画的小DemoAnimate的动画展示body, html{margin: 0;padding: 0;}#title{marg…

JQuery------鼠标双击时,不选中div里面的文字

如图&#xff1a;(去掉选中文字的蓝色背景色) 代码: //方法一:<div class"test" onselectstart"return false" >文字</div> //方法二: .test{-moz-user-select:none;-webkit-user-select: none; -ms-user-select: none; } 转载于:h…

限制ul显示高度_HP Envy 34寸超宽曲屏 显示器评测

先上结论&#xff1a;这是我目前不换显卡的前提下&#xff0c;能买到最好的显示器。估计在今后很长时间&#xff0c;它也算是一个相当好的显示器。如果你对显示器要求比较高&#xff0c;那么买这个显示器应该没错。显示器的指标如下&#xff1a;对角线34寸。基本就和27的16&…

linux wenj 立即生效_【新书连载】测试工程师核心开发技术(3)—远程登录Linux系统...

1.3.3 在线帮助命令下面对常用的在线帮助命令进行介绍。1&#xff0e;man命令man命令的作用是查看联机手册&#xff0c;命令格式如下。man [选项] 命令名称man后面的参数的含义如表1-1所示。表1-1 man后面的参数的含义输入man数字命令/函数即可以查到相关的命令和函数。若man…

利用Python进行简单的图像识别(验证码)

这是一个最简单的图像识别&#xff0c;将图片加载后直接利用Python的一个识别引擎进行识别将图片中的数字通过 pytesseract.image_to_string(image)识别后将结果存入到本地的txt文件中1 #-*-encoding:utf-8-*-2 import pytesseract3 from PIL import Image4 5 class GetImageDa…