查看原文
其他

一举拿下函数图像

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:朱巧利

文字编辑:张馨月

技术总编:李朋冲


爬虫俱乐部将于2020年1月5日至11日湖北武汉举行为期一周的Stata编程技术定制培训,此次采取初级班和高级班分批次培训。课程通过案例教学模式,旨在帮助大家在短期内掌握Stata软件编程、金融计量知识和实证分析方法,使大家熟悉Stata核心的爬虫技术,以及Stata与其他软件交互的高端技术。目前正在火热招生中~详细培训大纲及报名方式,请点击《爬虫俱乐部2020第一期Stata编程训练营开始报名啦!》或点击文末阅读原文呦~


大家在从小到大被数学折磨的过程中,一定少不了被函数图像支配的恐惧!!!最开始是五点图;然后是根据图像求极值;再后来要考研了,打开“劝退十八讲”,第一章就是各种图像,学概率统计之后还要被各种分布图搞懵圈!

图像一直以来都是各个学科中的关键内容,也是Stata非常适合搞定的部分。之前,爬虫俱乐部也介绍过很多Stata的绘图命令,比如《至忙至闲爬虫君,至繁至简散点图》、我来告诉你如何用Stata做出漂亮的图形:柱状图的绘制》。今天我们就来看看如何用Stata一举拿下函数图像~


一、twoway function命令介绍

twoway function的语法结构如下:

twoway function [[y]=] f(x) [if] [in][, options]

其中下划线为命令的最简写形式,即twoway可简写为tw;方括号内的部分均可省略,即可省略“y =”这个部分,[if]是条件语句,[in]表示范围;f(x)是这个命令的主体即我们需要绘制的函数,可以是一般的数学函数式,也可以是Stata内已有的函数,由于这里的yx都是针对这个命令的,故不会影响Stata内存中已存在的数据;[,option]表示选项,包括非常丰富的内容。

 

下面就对该命令的选项进行简单介绍:

range(# #)range(varname):指定坐标横轴的取值范围,其中range(# #)可随意设置范围,range(0 5.21)表示x(0,5.21),而range(varname)则以变量varname的最小值到最大值为范围,若不设置则默认range(0 1)

n(#):指定绘制函数图像所用点的个数,点越多图像越圆滑,该选项通常不用指定,默认的n(300)已经足够;

droplines(numlist):指定x值,然后画垂线,默认的是向y=0x轴画垂线,如droplines(1)即为从图像上x=1的点向x轴作垂线

base(#)droplines选项配合使用,如base(1)则为从图像上某点向y=1作垂线,默认为0

horizontal:交换x轴与y轴的位置,垂直绘制图像;

xvarformat(%fmt)yvarformat(%fmt):用于更改坐标刻度的显示格式(保留几位小数);

cline_optionsaxis_choice_optionstwoway_options选项可以对标题、连线、图例等进行设置,与在散点图、条形图等中的用法基本相同,可通过之前的推文或help twoway function进行回忆以及学习。

 

二、函数类别知多少

下面小编帮助大家整理了Stata中的函数类别(help functions)以及常用的数学函数:

1Stata中的函数类别

2Stata中常用数学函数


可见stata中的函数相当丰富!对于有图像的函数,如数学函数、一些概率分布及密度函数,都可以利用twoway function画出它们的函数图像。

只要掌握了twoway function,不管是初中生还是大学生,在学习中遇到的函数图像,基本都可以被我们一网打尽啦~                

 

三、函数图像绘制

(一)单个函数图像的绘制

twoway function y=5*x^2+x-1,range(-2 2)twoway function y=normalden(x),range(-4 4)twoway function logit(x)

通过这三个命令就可以分别画出下面三种不同类型的函数图像:



我们也可以添加一些选项让我们的图像看起来更加清晰美观:

twoway function y=exp(-x/6)*sin(x), range(0 13) color(red) droplines(1.4) /// title("复合函数") yline(0, lstyle(foreground)) xscale(noline) /// xlabel( 0 3.14 "{&pi}" 6.28 "2{&pi}" 9.42 "3{&pi}" 12.57 "4{&pi}")

其中yline()是在指定的y值处画横线,xlable()是对横坐标的刻度进行设定,xscale()是对坐标轴的线条进行更改,title()则是对图像添加标题,除此之外还有丰富的选项,在此没有一一列出,需要我们在使用中不断探索。


(二)组合函数图像的绘制

twoway (function y=abs(x-1)+abs(x-2)+3*abs(x-3)+abs(x-4),range(0 5)) /// (function y=sin(x),range(0 5)), ///  legend(label(1 y=|x-1|+|x-2|+3|x-3|+|x-4|) label(2 y=sin(x)) rows(2))

通过以上程序,我们就可以把两个函数图像绘制在一起了:



我们也可以画一些特殊的图像:

twoway (function y=normalden(x), range(-4 -1.96) color(blue*0.6) recast(area) yvarformat(%5.2f)) /// (function y=normalden(x), range(1.96 4) color(gs12) recast(area)) /// (function y=normalden(x), range(-4 4) color(red) clwidth(*2) ,plotregion(style(none)) /// legend(off) xscale(noline) xtitle("") ylabel(0(0.25)0.5) /// xlabel(-4 "-4 sd" -3 "-3 sd" -2 "-2 sd" -1 "-1 sd" 0 "mean" 1 "1 sd" 2 "2 sd" 3 "3 sd" 4 "4 sd"))

通过添加选项我们更改了图像的颜色、线条宽度、背景,图例等:



twoway function是不是很神奇呢!只要我们有了函数公式,它都可以帮我们绘制出图像,不管是单个函数图像还是多个函数的组合图像,有了它,我们都可以一举拿下!赶紧画出自己想画的图像吧!



对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
        BvD数据库介绍之Osiris

       来!左边跟我一起画个龙在你右边画一道彩虹~

Selenium登录豆瓣
妙用正则表达式--Python中的re模块(二)
cngcode和cnaddress新鲜出炉!
数据可视化之地理图   
“气功”研究哪家强
数据长、宽整型之另辟蹊径

10分钟带你走进宝藏数据库BvD

实战演练——爱婴医院中莆田系医院数据分析(二)

实战演练——爱婴医院中莆田系医院数据分析(一)

给你一个贴心的reshape应用

asrol命令——让你的描述性统计信息滚动起来

Python带你看文献—xpath抓取知网文献

您有一份天气预报待签收 

听说会Stata的人,数学不会太差?

批量修改路径


关于我们

微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存