2013-04-24 8 views
8

से पी-वैल्यू वापस करने के लिए एक सांख्यिकीय जावास्क्रिप्ट फ़ंक्शन की तलाश करने के लिए मुझे ज़ेड-स्कोर को प्रतिशत में परिवर्तित करने की आवश्यकता है। मुझे function in the jStat library का संदर्भ मिला जो मैं (jstat.ztest) का उपयोग कर सकता था, लेकिन jStat दस्तावेज उपलब्ध लाइब्रेरी से आगे प्रतीत होता है क्योंकि currently available version of the library में ऐसा कोई फ़ंक्शन नहीं है।एक जेड-स्कोर

मुझे लगता है कि more recent version of the library on GitHub है, जिसमें ज़ेस्टेस्ट फ़ंक्शन शामिल हो सकता है, लेकिन मैं लिनक्स नौसिखिया हूं और निर्देशों से लाइब्रेरी को कैसे बनाया जाए, यह पता नहीं लगा सका। मैंने लाइब्रेरी बनाने की कोशिश कर रहे गिट बैश और साइगविन के बारे में सीखने में अधिकतर दिन बिताया; आखिरकार मैंने फैसला किया कि मैं यहां पूछने से बेहतर होगा।

तो, क्या कोई मुझे जावास्क्रिप्ट फ़ंक्शन की तरफ इशारा कर सकता है जो मुझे चाहिए? वैकल्पिक रूप से, क्या कोई मुझे जेस्टैट लाइब्रेरी के एक निर्मित संस्करण की ओर इंगित कर सकता है जिसमें ज़ेस्टेस्ट फ़ंक्शन शामिल है?

उत्तर

15

मुझे यह एक मंच ऑनलाइन मिला और यह एक आकर्षण की तरह काम करता है।

function GetZPercent(z) 
    { 
    //z == number of standard deviations from the mean 

    //if z is greater than 6.5 standard deviations from the mean 
    //the number of significant digits will be outside of a reasonable 
    //range 
    if (z < -6.5) 
     return 0.0; 
    if(z > 6.5) 
     return 1.0; 

    var factK = 1; 
    var sum = 0; 
    var term = 1; 
    var k = 0; 
    var loopStop = Math.exp(-23); 
    while(Math.abs(term) > loopStop) 
    { 
     term = .3989422804 * Math.pow(-1,k) * Math.pow(z,k)/(2 * k + 1)/Math.pow(2,k) * Math.pow(z,k+1)/factK; 
     sum += term; 
     k++; 
     factK *= k; 

    } 
    sum += 0.5; 

    return sum; 
    } 

और मुझे केवल एक समारोह के लिए एक बड़ी लाइब्रेरी शामिल करने की आवश्यकता नहीं है।

+0

अपने जवाब स्वीकार करें ताकि लोगों को पता है सवाल का जवाब दिया गया है के लिए पॉल के जवाब से कोड संपादन। – Yatrix

+0

टिप @yatrix के लिए धन्यवाद। यह कहता है कि मुझे अपना जवाब स्वीकार करने से 2 दिन पहले इंतजार करना होगा। – burgerB

2

बस एक दो तरफा टी परीक्षण

function GetZPercent(z) 
{ 
//z == number of standard deviations from the mean 

//if z is greater than 6.5 standard deviations from the mean 
//the number of significant digits will be outside of a reasonable 
//range 
if (z < -6.5) 
    return 0.0; 
if(z > 6.5) 
    return 1.0; 

if (z > 0) { z = -z;} 

var factK = 1; 
var sum = 0; 
var term = 1; 
var k = 0; 
var loopStop = Math.exp(-23); 
while(Math.abs(term) > loopStop) 
{ 
    term = .3989422804 * Math.pow(-1,k) * Math.pow(z,k)/(2 * k + 1)/Math.pow(2,k) * Math.pow(z,k+1)/factK; 
    sum += term; 
    k++; 
    factK *= k; 

} 
sum += 0.5; 

return (2*sum); 
} 
+1

आपको इस फ़ंक्शन की शुरुआत में अपना if स्टेटमेंट रखना चाहिए। अन्यथा यह 1 लौटाएगा जब z> 6.5, जो आपके मामले में 0 होना चाहिए। – Ire