Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Narrowing Y Axis Below Range of Available Values?

    Hi,
    I'm trying to do a simulation analysis using Bernoulli trials to show the impacts of an instrumental variable on an outcome at varying levels of exposure misclassification, but am having trouble getting the axes to work. I was hoping to show three consecutive line plots that sort of build on each other and show the relationship between them all: 1. First, just showing the impact of the IV on the outcome, 2. Second, showing the impact of the IV on the exposure, and 3. Third, a line plot trying to see if you could recover the "true" IV-outcome value by dividing the previous two coefficients, or if the misclassification distorted things.

    I think I have the first two plots set. However, the third plot (the "Recovered" IV) has some values WAY off the scale of the first two plot. I would like to keep the same scale as the first two plots (from -0.5-0.5), but can't seem to get the yscale option to narrow the axes below the range of values. Is there a way to sort of 'zoom' in on a plot, or re-scale a plot even if there are lines that go off/outside the plot area? I tried to attach a picture of my thought below

    Click image for larger version

Name:	Recovered.png
Views:	2
Size:	699.0 KB
ID:	1776016


    Code:
    clear
    input float(sensitivity specificity Outcome_Instrument Exposure_Instrument N Recovered)
     1  1  .1979524   -.4920335  1  -.4023149
     2  2 .19987273   -.4819921  2  -.4146805
     3  3 .19539507   -.4677771  3  -.4177098
     4  4 .20104007   -.4597873  4  -.4372458
     5  5  .2047229   -.4529672  5  -.4519597
     6  6 .20243862   -.4361559  6  -.4641428
     7  7  .1974992   -.4341585  7  -.4549012
     8  8 .19582623   -.4173126  8  -.4692555
     9  9  .2010546   -.4110738  9  -.4890961
    10 10  .1967768  -.40045735 10  -.4913802
    11 11 .19767523   -.3924873 11 -.50364745
    12 12  .2008805   -.3847532 12 -.52210224
    13 13 .19796485   -.3689476 13  -.5365663
    14 14  .1999267   -.3634688 14  -.5500519
    15 15  .1994809   -.3563249 15  -.5598286
    16 16  .2018367   -.3480236 16  -.5799513
    17 17 .20599146   -.3277986 17  -.6284086
    18 18 .19865766   -.3184249 18   -.623876
    19 19 .20011953   -.3098217 19  -.6459183
    20 20  .2029089     -.30025 20  -.6757999
    21 21  .2080888  -.29368246 21  -.7085503
    22 22  .1995148  -.27897725 22  -.7151652
    23 23  .1976077  -.27036616 23  -.7308891
    24 24 .19988205  -.26658177 24  -.7497964
    25 25 .19182897   -.2517857 25   -.761874
    26 26 .20020168  -.24253325 26  -.8254607
    27 27  .1965113  -.22702724 27  -.8655847
    28 28 .19766107   -.2154652 28  -.9173689
    29 29  .2008289   -.2027534 29  -.9905081
    30 30  .1916174  -.20003997 30  -.9578956
    31 31  .1966161    -.191459 31 -1.0269357
    32 32   .198951  -.18841814 32 -1.0559015
    33 33   .204063  -.16891593 33 -1.2080745
    34 34 .20354807   -.1616527 34  -1.259169
    35 35  .1991173  -.14868827 35 -1.3391595
    36 36 .19947542  -.14301188 36  -1.394817
    37 37 .20163818   -.1326206 37 -1.5204136
    38 38 .19430883  -.12471799 38 -1.5579857
    39 39 .20011443   -.1109534 39 -1.8035898
    40 40 .20225348  -.09691685 40 -2.0868762
    41 41 .20048143  -.09399413 41 -2.1329145
    42 42 .19841333  -.08790667 42 -2.2570908
    43 43  .1984415  -.07816829 43  -2.538645
    44 44 .20107444  -.06200787 44  -3.242725
    45 45  .1953067  -.05473157 45  -3.568447
    46 46    .20268     -.04104 46  -4.938597
    47 47 .19368915 -.031254377 47  -6.197185
    48 48 .20088837 -.019738225 48  -10.17763
    49 49  .1990907 -.009663387 49  -20.60258
    50 50  .2025213  .002430746 50   83.31651
    51 51 .19561063   .01428216 51  13.696152
    52 52  .1941956  .020707596 52   9.377988
    53 53  .2012539   .02786657 53   7.222056
    54 54 .20316187   .04094384 54   4.961964
    55 55 .20232117   .04598163 55  4.4000435
    56 56  .2005032   .06347003 56  3.1590216
    57 57  .1951805   .06714247 57    2.90696
    58 58 .20233296   .08042106 58    2.51592
    59 59  .2021741   .08476795 59    2.38503
    60 60 .19646654   .09524527 60  2.0627432
    61 61 .19698767   .10367248 61   1.900096
    62 62 .19643863   .11610924 62  1.6918433
    63 63  .1971507   .12589702 63   1.565968
    64 64  .1996607   .14129843 64  1.4130427
    65 65 .20161334   .15394667 65   1.309631
    66 66  .1998442    .1558119 66   1.282599
    67 67  .2017871   .16800527 67   1.201076
    68 68   .194406    .1838346 68   1.057505
    69 69  .2035362   .19539367 69  1.0416725
    70 70 .19774595    .2040449 70   .9691296
    71 71  .1988621    .2163826 71   .9190301
    72 72  .1973204     .222218 72   .8879586
    73 73 .19914524   .23912475 73    .832809
    74 74  .1982089   .24112913 74   .8220031
    75 75   .199579     .247588 75   .8060932
    76 76 .19763863   .26586318 76   .7433847
    77 77  .2002576   .26751867 77   .7485743
    78 78   .193235   .27984953 78   .6904961
    79 79  .2020276   .29250795 79   .6906738
    80 80 .20245902    .3024369 80   .6694257
    81 81 .19859692    .3086454 81    .643447
    82 82 .19645767    .3274992 82   .5998722
    83 83 .19474263    .3249867 83   .5992326
    84 84  .1981202    .3374746 84  .58706695
    85 85 .20534445    .3510537 85   .5849374
    86 86 .19819283    .3587771 86  .55241215
    87 87 .20123222   .37194705 87  .54102385
    88 88 .20099346     .381962 88   .5262132
    89 89 .19806717    .3966859 89   .4993048
    90 90 .20021266    .3975544 90   .5036107
    91 91  .1971716   .41239235 91   .4781165
    92 92  .1970549    .4160435 92   .4736401
    93 93 .20152925   .43402845 93   .4643227
    94 94 .20064393   .44297835 94    .452943
    95 95  .2001314    .4509297 95   .4438195
    96 96 .20209825     .459106 96   .4401995
    97 97  .1991401    .4710231 97    .422782
    98 98  .1967469   .47760025 98   .4119489
    99 99 .19842264    .4916959 99   .4035475
    end
    
    // OUTCOME                                        
    graph twoway line Outcome_Instrument N                                                                ///
        || ,legend(on position(6) row(1) label(1 "Outcome-Instrument"))                                    ///
            xlabel(0 "0%" 10 "10%" 20 "20%" 30 "30%" 40 "40%" 50 "50%" 60 "60%" 70 "70%" 80 "80%" 90 "90%" 100 "100%")    ///
            ylabel(-0.5(0.1)0.5)                                                                        ///
            yscale(range(-0.5 0.5))                                                                        ///
            text(0.4 10 "E+ Truth", box bcolor(gs16) size(small))                                        ///
            yline(0.4)                                                                                     ///
            text(0.2 10 "IV Truth", box bcolor(gs16) size(small))                                        ///
            yline(0.2)                                                                                     ///
            xtitle("Sensitivity & Specificity") ytitle("Risk Difference") title("Non-Differential Exposure Misclassification") subtitle("9.9 Million Simulations", size(small))
                
    // OUTCOME + EXPOSURE
    graph twoway line Outcome_Instrument N                                                                ///
        || line Exposure_Instrument N                                                                     ///
        || ,legend(on position(6) row(1) label(1 "Outcome-Instrument") label(2 "Exposure-Instrument"))    ///
            xlabel(0 "0%" 10 "10%" 20 "20%" 30 "30%" 40 "40%" 50 "50%" 60 "60%" 70 "70%" 80 "80%" 90 "90%" 100 "100%")    ///
            ylabel(-0.5(0.1)0.5)                                                                        ///
            yscale(range(-0.5 0.5))                                                                        ///
            text(0.4 10 "E+ Truth", box bcolor(gs16) size(small))                                        ///
            yline(0.4)                                                                                     ///
            text(0.2 10 "IV Truth", box bcolor(gs16) size(small))                                        ///
            yline(0.2)                                                                                     ///
            xtitle("Sensitivity & Specificity") ytitle("Risk Difference") title("Non-Differential Exposure Misclassification") subtitle("9.9 Million Simulations", size(small))
                        
    // OUTCOME / EXPOSURE == TRUTH?    
    graph twoway line Outcome_Instrument N                                                                ///        
        || line Exposure_Instrument N                                                                     ///
        || line Recovered N,                                                                                 ///
        || ,legend(on position(6) row(1) label(1 "Outcome-Instrument") label(2 "Exposure-Instrument")  label(3 "Recovered IV?"))    ///
            xlabel(0 "0%" 10 "10%" 20 "20%" 30 "30%" 40 "40%" 50 "50%" 60 "60%" 70 "70%" 80 "80%" 90 "90%" 100 "100%")    ///
            ylabel(-0.5(0.1)0.5)                                                                        ///
            yscale(off)                                                                        ///
            text(0.4 15 "Truth", box bcolor(gs16))                                                        ///
            note("9.9 Million Simulations")                                                                ///
            yline(0.4)                                                                                     ///
            xtitle("Sensitivity & Specificity") ytitle("Risk Difference") title("Risk Differences of Non-Differential Exposure Misclassification")
    Best,
    David K
    Attached Files

  • #2
    The -yscale()- option can only be used to expand the axis beyond the range of the data. It never produces a graph with an axis that is smaller than the full range of the y variable. To do that, you have to restrict the data by adding an -if- qualifier to the graph command. Something like -graph ... if inrange(yvar, -0.5, 0.5)-.

    Comment


    • #3
      Ahh gotcha! Thanks so much Clyde!
      David

      Comment

      Working...
      X