亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? linear.java

?? 實現一元線性回歸分析并進行F,t檢驗,以便對得出的回歸方程進行線性顯著性分析
?? JAVA
字號:
/*
 * 創建日期 2006-7-12
 *
 * TODO 要更改此生成的文件的模板,請轉至
 * 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板
 */

/**
 * @author new
 *
 * TODO 要更改此生成的類型注釋的模板,請轉至
 * 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板
 */

import java.lang.Math;
import java.io.*;
import java.util.Vector;

public class linear{

private double[] dataX; //存放自變量數據;
private double[] dataY; //存放因變量數據;

private double interc;  //存放截距;
private double coeffi;  //存放回歸系數;
private double F;       //存放F檢驗值;
private double t;       //存放t檢驗值;

int N;


public linear(double[] X,double[] Y){
     dataX=X;
     dataY=Y;
     N=dataX.length;
}

public linear( ){

}
//一元線性回歸
//datax(1 To n):自變量,n為觀測次數,已知
//datay(1 To n):因變量,n為觀測次數,已知
//interc:截距,計算結果
//coeffi:回歸系數,計算結果
//F:F檢驗值,計算結果
//t:t檢驗值,計算結果
public void LinearMethod(){
       double Xa=0,Ya=0,Sxx=0,Sxy=0,Syy=0,SSR=0,SSE=0,Ur,Ue,Syx2=0,Sb,Sb2,Sx=0;
       int n,i;

       n=dataX.length;
       for(i=0;i<n;i++){
          Xa=Xa + dataX[i];
          Ya=Ya + dataY[i];
        }
//平均值
       Xa=Xa/n;
       Ya=Ya/n;

       for(i=0;i<n;i++){
          Sxx=Sxx + (dataX[i] - Xa)*(dataX[i] - Xa);
          Sxy=Sxy + (dataX[i] - Xa)*(dataY[i] - Ya);
        }
       coeffi = Sxy / Sxx   ;             //回歸系數
       interc = Ya - coeffi * Xa   ;      //截距

//由回歸所導致的方差
       for(i=0;i<n;i++){
          SSR = SSR + (interc + coeffi * dataX[i] - Ya)*(interc + coeffi * dataX[i] - Ya);
        }
        Ur = 1;   //回歸方差自由度
        SSR = SSR/Ur;


//由剩余所導致的方差
       for(i=0;i<n;i++){
          SSE = SSE + (dataY[i] - interc-coeffi * dataX[i])*(dataY[i] - interc-coeffi * dataX[i]);
        }

//求F值
    Ue = n - 2;   //剩余方差自由度
    SSE = SSE / Ue;
    F = SSR / SSE;

//求t值
    for(i=0;i<n;i++){
        Syx2 = Syx2 + (dataY[i] - (interc+coeffi * dataX[i])) * (dataY[i] - (interc+coeffi * dataX[i]));
    }
    Syx2 = Syx2 / (n - 2);
    for(i=0;i<n;i++){
        Sx = Sx + (dataX[i] - Xa) * (dataX[i] - Xa);
    }
    Sb2 = Syx2 / Sx;
    Sb = Math.sqrt(Sb2);
    t = Math.abs(coeffi / Sb);

}

//求正態分布的分位數
//Q:上側概率
//x:分位數
public double PNorm(double Q){
        double x;
        double p,y,z;
        double b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10;
        double b;

        b0 = 1.570796288;
        b1 = 0.03706987906;
        b2 = -0.0008364353589; 
        b3 = -0.0002250947176;
        b4 = 0.000006841218299; 
        b5 = 0.000005824238515;
        b6 = -0.00000104527497; 
        b7 = 8.360937017E-08;      
        b8 = -3.231081277E-09; 
        b9 = 3.657763036E-11;
        b10 = 6.936233982E-13;
        if(Q==0.5)
           return 0;
        if(Q>0.5)
           p=1-Q;
        else
           p=Q;
        y = -Math.log(4 * p * (1 - p));
        b = y * (b9 + y * b10);
        b = y * (b8 + b);
        b = y * (b7 + b);
        b = y * (b6 + b);
        b = y * (b5 + b);
        b = y * (b4 + b);
        b = y * (b3 + b);
        b = y * (b2 + b);
        b = y * (b1 + b);
        z = y * (b0 + b);
        x = Math.sqrt(z);
        if (Q > 0.5 )
             x = -x;
        return x;        
}

//計算F分布的分布函數              
//n1:自由度,已知
//n2:自由度,已知
//F:F值,已知
//p:下側概率,所求
//d:概率密度,所求
public double[] F_DIST(int n1, int n2,double F){

        double p,d;
        double[] ret = new double[2];

        double x,u,Lu;
        int IAI,IBI,nn1,nn2;
        int I;
     double PI = 3.14159265359;

        if(F == 0)
                {
                 p=0;d=0;
                 ret[0]=p;
                 ret[1]=d;
                 return ret;
                }

        x=n1*F/(n2+n1*F);
        if(n1%2==0)
                if(n2%2==0)
                        {u=x*(1-x);p=x;IAI=2;IBI=2;}
                else
                    {
                        u=x*(double)Math.sqrt(1-x)/2;
                        p=1-(double)Math.sqrt(1-x);
                        IAI=2;IBI=1;
                     }
        else
                if(n2%2==0){
                        p=(double)Math.sqrt(x);
                        u=p*(1-x)/2;
                        IAI=1;IBI=2;
                        }
                else{
                    u=(double)Math.sqrt(x*(1-x))/PI;
                    p=1-2*(double)Math.atan((double)Math.sqrt((1-x)/x))/PI;
                    IAI=1;IBI=1;
                    }
        nn1=n1-2;
        nn2=n2-2;
        if(u==0){
            d=(double)u/F;
            ret[0]=p;
            ret[1]=d;
            return ret;
        }
        else{
           Lu=(double)Math.log(u);
        }

        if(IAI!=n1){
           for(I=IAI;I<=nn1;I=I+2){
              p=p-2*(double)u/I;
              Lu=Lu+(double)Math.log((1+IBI/I)*x);
              u=(double)Math.exp(Lu);
           }
        }

        if(IBI==n2){
              d=(double)u/F;
            ret[0]=p;
            ret[1]=d;
            return ret;
        }
        for(I=IBI;I<=nn2;I=I+2){
              p=p+2*(double)u/I;
              Lu=Lu+Math.log((1+(double)n1/I)*(1-x));
              u=(double)Math.exp(Lu);
        }
        d=(double)u/F;

        ret[0]=p;
        ret[1]=d;
        return ret;

}

//計算F分布的分位數
//n1:自由度,已知
//n2:自由度,已知
//Q:上側概率,已知
//F:分位數,所求
public double PF_DIST(int n1, int n2, double Q){
        double F=0.0;
        double[] re = new double[2];

        double DF12,DF22,A,b;
        double A1,b1,p,YQ;
        double E,FO,pp,d;
        double GA1,GA2,GA3;
        int K;

        DF12=(double)n1/2;
        DF22=(double)n2/2;
        A=(double)2/(9*n1);
        A1=1-A;
        b=(double)2/(9*n2);
        b1=1-b;
        p=1-Q;
        YQ=PNorm(Q);////////////////////////////////////////////
        E=b1*b1-b*YQ*YQ;
        if(E>0.8)
        {   FO=(double)Math.pow(((A1*b1+YQ*(double)Math.sqrt(A1*A1*b+A*E))/E),3);
      
        }
        else{
            GA1=lnGamma(DF12+DF22);
            GA2=lnGamma(DF12);
            GA3=lnGamma(DF22);
            FO=(double)((double)2/n2)*(GA1-GA2-GA3+0.69315+(DF22-1)*(double)Math.log(n2)-DF22*(double)Math.log(n1)-(double)Math.log(Q));
            FO=(double)Math.exp(FO); 
            } 
        for(K=1;K<=30;K++){ 
           
                re= F_DIST(n1,n2,FO);
                pp=re[0];
                d=re[1];
                if(d==0){F=FO; return F;}
                F = FO - (double)(pp - p) / d;
                if ((double)Math.abs(FO - F) < 0.000001 * (double)Math.abs(F))
                	{ return F;}
                else FO = F;
         }
         return F;

}




//計算GAMMA函數
//x:自變量
//z:GAMMA函數值
public double GAMMA(double x){

    double z;
    double H,y,y1 ;
    H = 1; 
    y = x;
    double temp;

    do{
         temp=y;
         if(y==2)       {z=H;return z;}
         else if(y<2)   {H = H / y; y = y + 1;}
         else if(y>=3)  {y = y - 1;H = H * y; }
      }while(temp<2||temp>=3);

    y = y - 2;
    y1 = y * (0.005159 + y * 0.001606);
    y1 = y * (0.004451 + y1);
    y1 = y * (0.07211 + y1);
    y1 = y * (0.082112 + y1);
    y1 = y * (0.41174 + y1);
    y1 = y * (0.422787 + y1);
    H = H * (0.999999 + y1);
    z = H;

    return z;
}


//求Gamma函數的對數LogGamma(x)
//x:自變量
//G:Gamma函數的對數
public double lnGamma(double x){
        double G;
        double y,z,A;
        double b,b1;
        int n,I;
        if(x<8)
           {y=x+8;n=-1;}
        else
           {y=x;n=1;}

        z=1/(y*y);
        A=(y-0.5)*(double)Math.log(y)-y+0.9189385;
        b1 = (0.0007663452 * z - 0.0005940956) * z;
        b1 = (b1 + 0.0007936431) * z;
        b1 = (b1 - 0.002777778) * z;
        b = (double)(b1 + 0.0833333) / y;
        G = A + b;
        if (n >= 0 )  return G;
        y = y - 1;
        A = y;
        for(I = 1;I<=7;I++)
           A = A * (y - I);
        G = G - (double)Math.log(A);
        return G;
}


//計算t分布的分布函數
//n:自由度,已知
//T:t值,已知
//pp:下側概率,所求
//dd:概率密度,所求
public double[] T_Dist(int n, double t){
        double pp,dd;
        double[] ret=new double[2];

        int Sign;
        double TT,x;
        double p,u,GA1,GA2;
        int IBI,N2,I;
        double PI=3.14159265359;

        if(t==0){
                GA1=GAMMA(n / 2);
                GA2=GAMMA(n/2+0.5);
                pp=0.5;
                dd=GA2/(Math.sqrt(n*PI)*GA1);
                ret[0]=pp;
                ret[1]=dd;
                return ret;
        }
        if(t<0)
                Sign=-1;
        else
                Sign=1;

        TT = t * t;
        x = TT / (n + TT);

        if(n%2==0)  {              //n為偶數
            p = Math.sqrt(x);
            u = p * (1 - x) / 2;
            IBI = 2;
           }
        else  {                                  //n為奇數
            u = Math.sqrt(x * (1 - x)) / PI;
            p = 1 - 2 * Math.atan(Math.sqrt((1 - x) / x)) / PI;
            IBI = 1;
           }
        if(IBI!=n){
                N2=n-2;
                for(I=IBI;I<=N2;I=I+2){
                     p = p + 2 * u / I;
                     u = u * (1 + I) / I * (1 - x);
                }
        }
        dd=u/Math.abs(t);
        pp=0.5+Sign*p/2;
        ret[0]=pp;
        ret[1]=dd;
        return ret;
}



//   求t分布的分位數
//n:自由度,已知
//Q:上側概率(<=0.5),已知
//T:分位數,所求
public double PT_DIST(int n,double Q){
        double t=0;
        double PIS, DFR2, C;
        double Q2, p, YQ=0, E;
        double GA1, GA2, GA3;
        double T0, pp, d;
        int K;
        double PI=3.14159265359;

    PIS = Math.sqrt(PI);
    DFR2 = n / 2;

    if (n == 1 ){
         t = Math.tan(PI * (0.5 - Q));
         return t;}

    if (n == 2 ){
        if (Q > 0.5 ) C = -1;
        else C = 1;
        Q2 = (1 - 2 * Q) *(1 - 2 * Q);
        t = Math.sqrt(2 * Q2 / (1 - Q2)) * C;
        return t;
    }

    p = 1 - Q;
    YQ=PNorm (Q );             //正態分布分位數
    E = (1 - 1 / (4 * n)) *(1 - 1 / (4 * n)) - YQ * YQ / (2 * n);

    if( E > 0.5 )
        T0 = YQ / Math.sqrt(E);
    else{
        GA1=lnGamma( DFR2);
        GA2=lnGamma (DFR2 + 0.5 );
        GA3 = Math.exp((GA1 - GA2) / n);
        T0 = Math.sqrt(n) / Math.pow((PIS * Q * n) , (1 / n)) / GA3;
    }

    double[] re=new double[2];
    for (K = 1 ;K<=30;K++){
        re=T_Dist( n, T0);
        pp=re[0];
        d=re[1];
        if (d == 0) {
            t = T0;
            return t;}

        t = T0 - (pp - p) / d;
        if (Math.abs(T0 - t) < 0.000001 * Math.abs(t) )
            return t;
        else T0 = t;
    }
    return t;
}


//從文件中讀取要分析的數據
public void ReadText(String fileName){
	  int num=0;
      Vector v1=new Vector(); 
      Vector v2=new Vector(); 
    try {
       
        FileInputStream fstream = new FileInputStream(fileName);
    	//FileInputStream fstream = new FileInputStream("data.txt");
        DataInputStream in = new DataInputStream(fstream);
       
        String currentLine;
        char[] c;
        int index1,index2;
        while (in.available() !=0) {
        	num++;
        	currentLine=in.readLine();
            System.out.println (currentLine);
            c=currentLine.toCharArray();
            index1=currentLine.indexOf('	');
			index2=currentLine.indexOf(' ');
            String sub1=currentLine.substring(0,index1);
            v1.add(sub1);
            String sub2=currentLine.substring(index1+1);
            v2.add(sub2);
            }
        in.close();
      } catch (Exception e) {
	    System.err.println("File input error");
	  }
      N=num;
      dataX=new double[num];
      dataY=new double[num];
    for(int i=0;i<num;i++) 
    	{ dataX[i]=i+1;
    	  dataY[i]=Double.parseDouble((String)v2.elementAt(i));
    	}
	
	}


public static void main(String args[]){
	
        System.out.print("請輸入要分析的文件路徑:");
        linear ln = new linear();
        String name=null;
        byte [] b=null;
        try{
        	BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        	name=in.readLine();
        } catch (Exception e) {
    	    System.err.println("IO exception!");
    	  }
        System.out.println("要分析的數據如下:");
        ln.ReadText(name);
        ln.LinearMethod();
        System.out.println(" 回歸方程為:  "+ "Y = "+ln.coeffi+" * X"+" + "+ln.interc);

        double F005A=ln.PF_DIST(1,ln.N-2,0.05);
        double F001A=ln.PF_DIST(1,ln.N-2,0.01);
        System.out.println(" F檢驗值得:"+ln.F);
        System.out.println(" 顯著水平為0.05時的F臨界值為:"+F005A);
        System.out.println(" 顯著水平為0.01時的F臨界值為:"+F001A); 
        System.out.println(" F檢驗結論:"); 
        if(ln.F<=F005A)
        	System.out.println(" 回歸方程線性關系 不顯著 "); 
        if(ln.F>F005A&&ln.F<=F001A)
        	System.out.println(" 回歸方程線性關系 顯著 "); 
        if(ln.F>F001A)
        	System.out.println(" 回歸方程線性關系 特別顯著 "); 
        	
        double F005B=ln.PT_DIST(ln.N-2,0.05/2);
        double F001B=ln.PT_DIST(ln.N-2,0.01/2);
        System.out.println(" t檢驗值得:"+ln.t);
        System.out.println(" 顯著水平為0.05時的t臨界值為:"+F005B);
        System.out.println(" 顯著水平為0.01時的t臨界值為:"+F001B);
        System.out.println(" t檢驗結論:"); 
        if(ln.F<=F005B)
        	System.out.println(" 回歸系數 不顯著大于0"); 
        if(ln.F>F005B&&ln.F<=F001B)
        	System.out.println(" 回歸系數 顯著大于0 "); 
        if(ln.F>F001B)
        	System.out.println(" 回歸系數 特別顯著大于0 "); 
        	        

}

}





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品欧美二区三区中文字幕| 丁香五精品蜜臀久久久久99网站 | 精品国产不卡一区二区三区| av电影天堂一区二区在线| 日韩精品一级中文字幕精品视频免费观看 | 国产精品高潮呻吟久久| 国产清纯美女被跳蛋高潮一区二区久久w | 日韩欧美国产精品| 日韩免费看网站| 亚洲欧美电影一区二区| 亚洲蜜臀av乱码久久精品蜜桃| 青青草国产精品97视觉盛宴| 午夜成人在线视频| 亚洲欧美日韩国产另类专区| 国产一区不卡在线| 国产剧情在线观看一区二区| 成人久久视频在线观看| 91麻豆.com| 国产欧美日韩三区| 毛片av一区二区| 国产盗摄女厕一区二区三区| 99r国产精品| 欧美日韩精品电影| 欧美一二三在线| 国产日韩影视精品| 精品一区二区三区视频| av一二三不卡影片| 国产日韩在线不卡| 国产精品一二三在| 亚洲精品在线观看视频| 国产在线乱码一区二区三区| 91在线视频官网| 日韩美女精品在线| 精品一二三四区| 日韩限制级电影在线观看| 日韩中文字幕91| 欧美一区二区三区视频免费播放| 久久久久99精品一区| 亚洲综合久久久久| 国产精品羞羞答答xxdd| 精品国产一区二区三区四区四| 青青草原综合久久大伊人精品| 欧美精品自拍偷拍动漫精品| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 色av一区二区| 久久久噜噜噜久噜久久综合| 国产美女精品人人做人人爽| 国产精品―色哟哟| 久久综合色天天久久综合图片| 国产精品成人免费在线| 91猫先生在线| 午夜精品福利久久久| 日韩亚洲国产中文字幕欧美| 国产精品99久久久| 亚洲男女毛片无遮挡| 在线亚洲高清视频| 久久精品视频一区二区三区| 日本在线不卡一区| 欧美网站一区二区| 亚洲免费观看高清完整版在线观看熊 | 欧美猛男gaygay网站| 久久精品免费观看| 欧美精品乱人伦久久久久久| 免费成人美女在线观看| 国产喷白浆一区二区三区| 成人国产精品视频| 国产精品毛片久久久久久| 在线观看亚洲a| 久久99精品久久久久久国产越南| 欧美激情一区二区在线| 理论片日本一区| 国产精品久久久久一区| 欧美日韩国产综合一区二区三区| 国产自产高清不卡| 亚洲国产精品综合小说图片区| 在线视频综合导航| 久久av资源站| 亚洲黄一区二区三区| 精品国产一区二区三区四区四 | 日本亚洲一区二区| 最新不卡av在线| 精品久久五月天| 国产精一区二区三区| 亚洲中国最大av网站| 久久精品一区蜜桃臀影院| 欧美日韩国产经典色站一区二区三区| 国产一区福利在线| 日本麻豆一区二区三区视频| 亚洲同性同志一二三专区| 欧美精品一区男女天堂| 欧美群妇大交群中文字幕| 成人的网站免费观看| 精品一区二区三区在线播放| 亚洲成av人片在www色猫咪| 日韩欧美一二三| 欧美日免费三级在线| 蜜桃一区二区三区在线| 一区2区3区在线看| 日韩一级免费观看| 欧美日韩三级在线| 色偷偷一区二区三区| 日韩av在线免费观看不卡| 18成人在线视频| 欧美丰满美乳xxx高潮www| 色婷婷亚洲综合| 99国产精品久久久久久久久久 | 国产高清不卡二三区| 麻豆91精品视频| 青青国产91久久久久久| 日本视频在线一区| 日韩极品在线观看| 亚洲午夜av在线| 一区二区高清免费观看影视大全| 亚洲欧美日韩国产手机在线| 中文字幕亚洲一区二区av在线| 中文字幕乱码一区二区免费| 国产日韩高清在线| 亚洲国产电影在线观看| 国产区在线观看成人精品| 欧美韩国日本综合| 综合久久综合久久| 亚洲在线视频免费观看| 性欧美大战久久久久久久久| 天天免费综合色| 久久精品国产亚洲aⅴ| 精品中文字幕一区二区小辣椒| 蜜桃精品视频在线| 国产乱人伦偷精品视频不卡| 大白屁股一区二区视频| 99re免费视频精品全部| 欧美视频一区二区三区| 欧美一区二区三区电影| 欧美大尺度电影在线| 欧美国产成人精品| 亚洲免费观看高清完整版在线| 亚洲午夜精品在线| 九九久久精品视频| gogo大胆日本视频一区| 欧美视频一区在线| 精品国产91九色蝌蚪| 国产精品视频yy9299一区| 一区二区三区高清| 日本va欧美va瓶| 国产盗摄精品一区二区三区在线| 91啪九色porn原创视频在线观看| 欧美精品色综合| 国产欧美精品在线观看| 亚洲精品乱码久久久久久黑人| 日本欧美在线观看| 成人综合在线网站| 欧美日韩不卡在线| 久久精品亚洲乱码伦伦中文| 亚洲综合区在线| 国产一区二区三区免费| 91国产成人在线| 久久综合久久综合九色| 一区二区三区四区亚洲| 国产综合色在线视频区| 欧美羞羞免费网站| 国产欧美精品一区二区色综合| 亚洲一级二级三级在线免费观看| 国内精品伊人久久久久av影院 | 日韩精品一区二区三区四区视频| 国产亚洲一二三区| 天堂影院一区二区| 99免费精品视频| 久久综合九色欧美综合狠狠| 亚洲亚洲精品在线观看| 成人久久18免费网站麻豆| 日韩一级大片在线观看| 亚洲一区在线电影| 成人福利视频网站| 精品国产3级a| 免费在线观看视频一区| 在线亚洲+欧美+日本专区| 中文字幕精品一区二区三区精品| 美女视频免费一区| 欧美日韩三级在线| 亚洲少妇屁股交4| 国产成人av一区二区三区在线观看| 欧美另类久久久品| 亚洲综合一区二区精品导航| 波多野结衣欧美| 国产欧美视频一区二区三区| 免费美女久久99| 欧美一区二区三区公司| 天天综合色天天综合色h| 欧美在线视频你懂得| ●精品国产综合乱码久久久久| 国产黑丝在线一区二区三区| 亚洲精品在线一区二区| 麻豆国产一区二区| 日韩欧美国产精品| 麻豆国产欧美一区二区三区| 日韩欧美一区二区不卡| 麻豆国产精品一区二区三区| 欧美一级精品大片| 免费看日韩a级影片| 日韩女优毛片在线| 老司机午夜精品|