# [ncl-talk] Bootstrapping method for significant test

Dennis Shea shea at ucar.edu
Thu Dec 15 16:37:34 MST 2016

```[1]
Sorry, bad wording: not 'wrong'. I did not look at the code carefully enough

[2]
Bootstrapping is  an alternative to using some classic parametric model as
a base reference.
It only uses the data at hand. It does not depend on any base distrbution.
The methof creates the distribution.
http://www.ncl.ucar.edu/Applications/bootstrap.shtml
Once the 'nBoot' samples are generated, they are sorted into ascending
order.

ia = *dim_pqsort_n*
<http://www.ncl.ucar.edu/Document/Functions/Built-in/dim_pqsort_n.shtml>(xBoot,
2, 0)        ; sort bootstrap means into ascending order

n025     = *round*
<http://www.ncl.ucar.edu/Document/Functions/Built-in/round.shtml>(0.025*(nBoot-1),3)
; indices for sorted array
n500     = *round*
<http://www.ncl.ucar.edu/Document/Functions/Built-in/round.shtml>(0.500*(nBoot-1),3)
n975     = *round*
<http://www.ncl.ucar.edu/Document/Functions/Built-in/round.shtml>(0.975*(nBoot-1),3)

xBoot_025= xBoot(n025)                 ;  2.5% level
xBoot_500= xBoot(n500)                 ; 50.0% level  (median)
xBoot_975= xBoot(n975)                 ; 97.5% level

These are the significance levels given the distribution. If your original
sample exceeds the (say) '

xBoot_975' value it is significant at the 95.5% level.

You could calculate xBoot_950 for the 95% level.

===

On Wed, Dec 14, 2016 at 9:13 PM, Anahita Amiri Farahani <aamir003 at ucr.edu>
wrote:

> Why this one is wrong to calculate the significance level when there is
> only one partial derivative? and if this is wrong how can I calculate that
> it is significant or not?
>
> And based on this:
>
>    nBoot =   10000
>    xBoot = *new* <http://www.ncl.ucar.edu/Document/Functions/Built-in/new.shtml> (nBoot, typeof(F))
>
>    do ns=0,nBoot-1                        ; generate multiple estimates
>       iw = *generate_sample_indices* <http://www.ncl.ucar.edu/Document/Functions/Contributed/generate_sample_indices.shtml>(N,*1*))  ; indices with replacement
>       xBoot(ns) = (dF(iw)/dN(iw))*(dN(iw)/dA(iw))
>    end do
>
>
> How can I say if it is significant?
>
>
> Thanks,
>
> Ana
>
>
> On Wed, Dec 14, 2016 at 7:58 PM, Dennis Shea <shea at ucar.edu> wrote:
>
>> [1]
>> http://www.ncl.ucar.edu/Applications/bootstrap.shtml
>> http://www.ncl.ucar.edu/Document/Functions/Bootstrap/bootstr
>> ap_regcoef.shtml
>> Look at examples
>> bootstrap_regcoef_1.ncl
>> bootstrap_regcoef_2.ncl
>> bootstrap_regcoef_3.ncl
>>
>> [2]
>> You don't need the following but it was wrong. FTR:
>>
>> do k=0,2999
>>     ab  = regCoef(AI_fall(:,k),Nd_fall(:,k))
>>     df   = ab at nptxy-2
>>     tval = ab at tval
>>
>>     df     = where(df.lt.1,1, df)
>>     prob = 1 - betainc(df/(df+tval^2), df/2.0, 0.5)
>>     sig_fall(k) = where(prob.lt.0.95, -999, prob)
>> end do
>>
>> On Wed, Dec 14, 2016 at 7:02 PM, Anahita Amiri Farahani <aamir003 at ucr.edu
>> > wrote:
>>
>>> question:
>>>
>>> Before I use regCoef function in NCL to calculate linear regression.
>>> Using this function gives other variables such as rcraw_npt, and
>>>  rcraw_tval, so I was able to calculate significance at 95%, 90% and 99%
>>> confidence level. I've put that part of the code here:
>>>
>>> do k=0,2999
>>>
>>>    ab = regCoef(AI_fall(:,k),Nd_fall(:,k))
>>>     rcraw_npt=ab at nptxy-2
>>>     rcraw_tval=ab at tval
>>>     b    = rcraw_tval
>>>     b    = 0.5
>>>     rcraw_npt=where(rcraw_npt.lt.1,1,rcraw_npt)
>>>     rcraw_prob = (1 - betainc(rcraw_npt/(rcraw_npt+rcraw_tval^2),rcraw_npt/2.0,b)
>>> )
>>>     sig_fall(k)=where(rcraw_prob.lt.0.95,-999,rcraw_prob)
>>>
>>> end do
>>>
>>>
>>> How can I calculate the significance at different confidence level here
>>> by using xBoot?
>>>
>>> Best,
>>> Ana
>>>
>>>
>>>
>>>
>>> On Wed, Dec 14, 2016 at 2:45 PM, Dennis Shea <shea at ucar.edu> wrote:
>>>
>>>> I think you will have to decide what is best.
>>>>
>>>> [a]
>>>> Constrain the F,N,A triplets to be 'coupled'
>>>>
>>>>    nBoot =   10000
>>>>    xBoot = *new* <http://www.ncl.ucar.edu/Document/Functions/Built-in/new.shtml> (nBoot, typeof(F))
>>>>
>>>>    do ns=0,nBoot-1                        ; generate multiple estimates
>>>>       iw = *generate_sample_indices* <http://www.ncl.ucar.edu/Document/Functions/Contributed/generate_sample_indices.shtml>(N,*1*))  ; indices with replacement
>>>>       xBoot(ns) = (dF(iw)/dN(iw))*(dN(iw)/dA(iw))
>>>>    end do
>>>>
>>>> [b]
>>>>
>>>> Unconstrained
>>>>
>>>>
>>>>    nBoot =   10000
>>>>    xBoot = *new* <http://www.ncl.ucar.edu/Document/Functions/Built-in/new.shtml> (nBoot, typeof(F))
>>>>
>>>>    do ns=0,nBoot-1                        ; generate multiple estimates
>>>>       iwF = *generate_sample_indices* <http://www.ncl.ucar.edu/Document/Functions/Contributed/generate_sample_indices.shtml>(N,*1*)) ; indices with replacement
>>>>       iwN = *generate_sample_indices* <http://www.ncl.ucar.edu/Document/Functions/Contributed/generate_sample_indices.shtml>(N,*1*))
>>>>       iwA = *generate_sample_indices* <http://www.ncl.ucar.edu/Document/Functions/Contributed/generate_sample_indices.shtml>(N,*1*))
>>>>
>>>>       xBoot(ns) = (dF(iwF)/dN(iwN))*(dN(iwN)/dA(iwA))
>>>>    end do
>>>>
>>>> [c]
>>>> See where your product fits.
>>>>
>>>>    ia = *dim_pqsort_n* <http://www.ncl.ucar.edu/Document/Functions/Built-in/dim_pqsort_n.shtml>(xBoot, 2, 0)        ; sort bootstrap means into ascending order
>>>>
>>>>    n025     = *round* <http://www.ncl.ucar.edu/Document/Functions/Built-in/round.shtml>(0.025*(nBoot-1),3)    ; indices for sorted array
>>>>    n500     = *round* <http://www.ncl.ucar.edu/Document/Functions/Built-in/round.shtml>(0.500*(nBoot-1),3)
>>>>    n975     = *round* <http://www.ncl.ucar.edu/Document/Functions/Built-in/round.shtml>(0.975*(nBoot-1),3)
>>>>
>>>>    xBoot_025= xBoot(n025)                 ;  2.5% level
>>>>    xBoot_500= xBoot(n500)                 ; 50.0% level  (median)
>>>>    xBoot_975= xBoot(n975)                 ; 97.5% level
>>>>
>>>>
>>>>
>>>> On Wed, Dec 14, 2016 at 3:12 PM, Anahita Amiri Farahani <
>>>> aamir003 at ucr.edu> wrote:
>>>>
>>>>> Dear all,
>>>>>
>>>>> I have a product of two partial derivatives : dF/dN*dN/dA and for each
>>>>> of the variables (F, N, and A) I have data for 720 times. Each partial
>>>>> derivatives are calculated  by linear regression. I was wondering how I can
>>>>> calculate the significant test for this product. All examples in NCL to
>>>>> estimate linear regression by this function: *regline_stats
>>>>> <http://www.ncl.ucar.edu/Document/Functions/Contributed/regline_stats.shtml> *
>>>>> give the regression coefficient for two variables.
>>>>>
>>>>> Thanks,
>>>>> Ana
>>>>>
>>>>> _______________________________________________
>>>>> ncl-talk mailing list
>>>>> ncl-talk at ucar.edu
>>>>> List instructions, subscriber options, unsubscribe:
>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>
>>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20161215/fcb1c3f7/attachment.html
```