G4. 函数图

整理人: 郭楚玉 (武汉大学)
邮箱:

我们通常利用函数图来完成两个基本的目的:

1. 函数图概览

我们常用 twoway function 命令来绘制函数图。比如,绘制一个最简单的函数 \(y=x\) 。Stata 画出的图的纵横比不是 1:1 ,显示的不是一个正方形。aspect(1) 选项可以解决这个问题。具体示例如下:

twoway function y = x
twoway function y = x, aspect(1) 

图1 函数图1

在 Stata 默认的情况下,x 的取值范围是 0-1 之间。 range选项可以改变 x 的取值范围。可以呈现出更完整的二次曲线形状。 xline选项可以给该图增加一条蓝色虚线的对称轴。 具体 Stata 命令操作和图案效果如下:

twoway function y = -2*x^2 + 8*x + 10
twoway function y = -2*x^2 + 8*x + 10, range(-10 10)
twoway function y = -2*x^2 + 8*x + 10, range(-10 10) xline(2, lpattern(dash) lcolor(blue))

图2 函数图2

图3 函数图3

图4 函数图4

2. 多幅函数图叠加

Stata 可以画出多种随机数分布的密度曲线,我们画一个 t 分布的密度函数曲线为例。

twoway  (function Normal = normalden(x), range(-8 8))  ///
        (function    t20 = tden(20,x), range(-8 8))    ///
        (function    t3  = tden(3 ,x), range(-8 8))    ///
        (function    t1  = tden(1 ,x), range(-8 8)),   ///
        legend(col(1) position(1) ring(0) size(*1.1))  ///
        xtitle("t distribution", margin(t+2) size(*1.3))

图5 函数图5

图五中有四条曲线,分别是一条正态分布曲线,其它三条是自由度分别为 20, 3, 1 的 t 分布曲线。命令中的 legend 选项是设定图例样式的; size 可以调节字体大小为默认值的多少倍 (示例中是 1.1 倍);margin (t+2)可以将图片标题与 x 轴拉开一定的距离。

3. 添加特殊字符和文字

Stata 中添加字符,是用简写的代码对应具体的希腊字母,代码书写并不直观。 在 help graph text 命令下,打开蓝色字体的 text 可以阅读详细 PDF 文档。

图6 函数图6

下面我们绘画一个卡方分布的曲线:

twoway function y = gammaden(3/2,2,0,x), range(0 10) ///
title("{&chi}{sup:2}(3) distribution")

图7 卡方分布图1

注意此处卡方分布的书写方式,就是引用了对应的代码。

我们也可以用 text 选项为图中的多条曲线加注名字。 text 后括号中的前两个数值,分别对应所附加文字的纵坐标和横坐标。具体数值大小需用肉眼判断位置,调试几次后即可。具体命令和图片示例如下:

twoway ///
    (function chi1 = gammaden(1/2,2,0,x), range(0 10))  ///
    (function chi3 = gammaden(3/2,2,0,x), range(0 10))  ///
    , ///
    legend(off) ///
    subtitle("{&chi}{sup:2} distribution", ///
              margin(t+2) size(*1.3)) ///
    text(1.5 0.4 "{&chi}{sup:2}(1)")  ///
    text(0.3 0.4 "{&chi}{sup:2}(3)") 

图8 卡方分布图2