99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀R語(yǔ)言解讀一元線性回歸模型
R語(yǔ)言解讀一元線性回歸模型
2017-02-26
收藏

R語(yǔ)言解讀一元線性回歸模型

R語(yǔ)言作為統(tǒng)計(jì)學(xué)一門語(yǔ)言,一直在小眾領(lǐng)域閃耀著光芒。直到大數(shù)據(jù)的爆發(fā),R語(yǔ)言變成了一門炙手可熱的數(shù)據(jù)分析的利器。隨著越來越多的工程背景的人的加入,R語(yǔ)言的社區(qū)在迅速擴(kuò)大成長(zhǎng)?,F(xiàn)在已不僅僅是統(tǒng)計(jì)領(lǐng)域,教育,銀行,電商,互聯(lián)網(wǎng)….都在使用R語(yǔ)言。

要成為有理想的極客,我們不能停留在語(yǔ)法上,要掌握牢固的數(shù)學(xué),概率,統(tǒng)計(jì)知識(shí),同時(shí)還要有創(chuàng)新精神,把R語(yǔ)言發(fā)揮到各個(gè)領(lǐng)域。讓我們一起動(dòng)起來吧,開始R的極客理想。

前言

在我們的日常生活中,存在大量的具有相關(guān)性的事件,比如大氣壓和海拔高度,海拔越高大氣壓強(qiáng)越小;人的身高和體重,普遍來看越高的人體重也越重。還有一些可能存在相關(guān)性的事件,比如知識(shí)水平越高的人,收入水平越高;市場(chǎng)化的國(guó)家經(jīng)濟(jì)越好,則貨幣越強(qiáng)勢(shì),反而全球經(jīng)濟(jì)危機(jī),黃金等避險(xiǎn)資產(chǎn)越走強(qiáng)。

如果我們要研究這些事件,找到不同變量之間的關(guān)系,我們就會(huì)用到回歸分析。一元線性回歸分析是處理兩個(gè)變量之間關(guān)系的最簡(jiǎn)單模型,是兩個(gè)變量之間的線性相關(guān)關(guān)系。讓我們一起發(fā)現(xiàn)生活中的規(guī)律吧。

由于本文為非統(tǒng)計(jì)的專業(yè)文章,所以當(dāng)出現(xiàn)與教課書不符的描述,請(qǐng)以教課書為準(zhǔn)。本文力求用簡(jiǎn)化的語(yǔ)言,來介紹一元線性回歸的知識(shí),同時(shí)配合R語(yǔ)言的實(shí)現(xiàn)。

目錄

一元線性回歸介紹

數(shù)據(jù)集和數(shù)學(xué)模型

回歸參數(shù)估計(jì)

回歸方程的顯著性檢驗(yàn)

殘差分析和異常點(diǎn)檢測(cè)

模型預(yù)測(cè)

1. 一元線性回歸介紹

回歸分析(Regression Analysis)是用來確定2個(gè)或2個(gè)以上變量間關(guān)系的一種統(tǒng)計(jì)分析方法。如果回歸分析中,只包括一個(gè)自變量X和一個(gè)因變量Y時(shí),且它們的關(guān)系是線性的,那么這種回歸分析稱為一元線性回歸分析。

回歸分析屬于統(tǒng)計(jì)學(xué)的基本模型,涉及統(tǒng)計(jì)學(xué)基礎(chǔ),就會(huì)有一大堆的名詞和知識(shí)點(diǎn)需要介紹。

回歸分析中,變量有2類:因變量 和 自變量。因變量通常是指實(shí)際問題中所關(guān)心的指標(biāo),用Y表示。而自變量是影響因變量取值的一個(gè)變量,用X表示,如果有多個(gè)自變量則表示為X1, X2, …, Xn。

回歸分析研究的主要步驟:

確定因變量Y 與 自變量X1, X2, …, Xn 之間的定量關(guān)系表達(dá)式,即回歸方程。

對(duì)回歸方程的置信度檢查。

判斷自變量Xn(n=1,2,…,m)對(duì)因變量的影響。

利用回歸方程進(jìn)行預(yù)測(cè)。

本文會(huì)根據(jù)回歸分析的的主要步驟,進(jìn)行結(jié)構(gòu)梳理,介紹一元線性回歸模型的使用方法。

2. 數(shù)據(jù)集和數(shù)學(xué)模型

先讓我們通過一個(gè)例子開始吧,用一組簡(jiǎn)單的數(shù)據(jù)來說明一元線性回歸分析的數(shù)學(xué)模型的原理和公式。找出下面數(shù)據(jù)集中Y與X的定量關(guān)系。

數(shù)據(jù)集為2016年3月1日,白天開盤的交易數(shù)據(jù),為鋅的2個(gè)期貨合約的分鐘線的價(jià)格數(shù)據(jù)。數(shù)據(jù)集包括有3列,索引列為時(shí)間,zn1.Close為ZN1604合約的1分鐘線的報(bào)價(jià)數(shù)據(jù),zn2.Close為ZN1605合約的1分鐘線的報(bào)價(jià)數(shù)據(jù)。

數(shù)據(jù)集如下:

zn1.Close zn2.Close
2016-03-01 09:01:00     14075     14145
2016-03-01 09:02:00     14095     14160
2016-03-01 09:03:00     14095     14160
2016-03-01 09:04:00     14095     14165
2016-03-01 09:05:00     14120     14190
2016-03-01 09:06:00     14115     14180
2016-03-01 09:07:00     14110     14170
2016-03-01 09:08:00     14110     14175
2016-03-01 09:09:00     14105     14170
2016-03-01 09:10:00     14105     14170
2016-03-01 09:11:00     14120     14180
2016-03-01 09:12:00     14105     14170
2016-03-01 09:13:00     14105     14170
2016-03-01 09:14:00     14110     14175
2016-03-01 09:15:00     14105     14175
2016-03-01 09:16:00     14120     14185
2016-03-01 09:17:00     14125     14190
2016-03-01 09:18:00     14115     14185
2016-03-01 09:19:00     14135     14195
2016-03-01 09:20:00     14125     14190
2016-03-01 09:21:00     14135     14205
2016-03-01 09:22:00     14140     14210
2016-03-01 09:23:00     14140     14200
2016-03-01 09:24:00     14135     14205
2016-03-01 09:25:00     14140     14205
2016-03-01 09:26:00     14135     14205
2016-03-01 09:27:00     14130     14205

我們以zn1.Close列的價(jià)格為X,zn2.Close列的價(jià)格為Y,那么試試找到自變量X和因變量Y的關(guān)系的表達(dá)式。

為了直觀起見,我們可以先畫出一張散點(diǎn)圖,以X為橫坐標(biāo),Y為縱坐標(biāo),每個(gè)點(diǎn)對(duì)應(yīng)一個(gè)X和一個(gè)Y。

# 數(shù)據(jù)集已存在df變量中
> head(df)
                    zn1.Close zn2.Close
2016-03-01 09:01:00     14075     14145
2016-03-01 09:02:00     14095     14160
2016-03-01 09:03:00     14095     14160
2016-03-01 09:04:00     14095     14165
2016-03-01 09:05:00     14120     14190
2016-03-01 09:06:00     14115     14180

# 分別給x,y賦值
> x<-as.numeric(df[,1])
> y<-as.numeric(df[,2])

# 畫圖
> plot(y~x+1)

散點(diǎn)圖上發(fā)現(xiàn) X和Y 的排列基本是在一條直線附近,那么我們可以假設(shè)X和Y的關(guān)系是線性,可以用公式表式為。

Y = a + b * X + c

Y,為因變量

X,為自變量

a,為截距

b,為自變量系數(shù)

a+b*X, 表示Y隨X的變化而線性變化的部分

c, 為殘差或隨機(jī)誤差,是其他一切不確定因素影響的總和,其值不可觀測(cè)。假定c是符合均值為0方差為σ^2的正態(tài)分布 ,記作c~N(0,σ^2)

對(duì)于上面的公式,稱函數(shù)f(X) = a + b * X 為一元線性回歸函數(shù),a為回歸常數(shù),b為回歸系數(shù),統(tǒng)稱回歸參數(shù)。X 為回歸自變量或回歸因子,Y 為回歸因變量或響應(yīng)變量。如果(X1,Y1),(X2,Y2)…(Xn,Yn)是(X,Y)的一組觀測(cè)值,則一元線性回歸模型可表示為

Yi = a + b * X + ci,     i= 1,2,...n

其中E(ci)=0, var(ci)=σ^2, i=1,2,...n

通過對(duì)一元線性回歸模型的數(shù)學(xué)定義,接下來讓我們利用數(shù)據(jù)集做回歸模型的參數(shù)估計(jì)。

3. 回歸參數(shù)估計(jì)

對(duì)于上面的公式,回歸參數(shù)a,b是我們不知道的,我們需要用參數(shù)估計(jì)的方法來計(jì)算出a,b的值,而從得到數(shù)據(jù)集的X和Y的定量關(guān)系。我們的目標(biāo)是要計(jì)算出一條直線,使直接線上每個(gè)點(diǎn)的Y值和實(shí)際數(shù)據(jù)的Y值之差的平方和最小,即(Y1實(shí)際-Y1預(yù)測(cè))^2+(Y2實(shí)際-Y2預(yù)測(cè))^2+ …… +(Yn實(shí)際-Yn預(yù)測(cè))^2 的值最小。參數(shù)估計(jì)時(shí),我們只考慮Y隨X的線性變化的部分,而殘差c是不可觀測(cè)的,參數(shù)估計(jì)法并不需要考慮殘差,對(duì)于殘差的分析在后文中介紹。

令公式變形為a和b的函數(shù)Q(a,b), 即 (Y實(shí)際-Y測(cè)試)的平方和,變成到(Y實(shí)際 – (a+b*X))的平方和。

公式一 回歸參數(shù)變形公式

通過最小二乘估計(jì)推導(dǎo)出a和b的求解公式,詳細(xì)的推導(dǎo)過程請(qǐng)參考文章 一元線性回歸的細(xì)節(jié)

公式二 回歸參數(shù)計(jì)算公式

其中 x和y的均值,計(jì)算方法如下

公式三 均值計(jì)算公式

有了這個(gè)公式,我們就可以求出a和b兩個(gè)的回歸參數(shù)的解了。

接下來,我們用R語(yǔ)言來實(shí)現(xiàn)對(duì)上面數(shù)據(jù)的回歸模型的參數(shù)估計(jì),R語(yǔ)言中可以用lm()函數(shù)來實(shí)現(xiàn)一元線性回歸的建模過程。

# 建立線性回歸模型
> lm.ab<-lm(y ~ 1+x)

# 打印參數(shù)估計(jì)的結(jié)果
> lm.ab

Call:
lm(formula = y ~ 1 + x)

Coefficients:
(Intercept)            x  
   -349.493        1.029

如果你想動(dòng)手來計(jì)算也可以自己實(shí)現(xiàn)公式。

# x均值
> Xm<-mean(x);Xm
[1] 14034.82

# y均值
> Ym<-mean(y);Ym
[1] 14096.76

# 計(jì)算回歸系數(shù)
> b <- sum((x-Xm)*(y-Ym)) / sum((x-Xm)^2) ;b
[1] 1.029315

# 計(jì)算回歸常數(shù)
> a <- Ym - b * Xm;a
[1] -349.493

回歸參數(shù)a和b的計(jì)算結(jié)果,與lm()函數(shù)的計(jì)算結(jié)果是相同的。有了a和b的值,我們就可以畫出這條近似的直接線。

計(jì)算公式為:

Y= a + b * X = -349.493 + 1.029315 * X

畫出回歸線。

> plot(y~x+1)
> abline(lm.ab)

這條直線是我們用數(shù)據(jù)擬合出來的,是一個(gè)近似的值。我們看到有些點(diǎn)在線上,有些點(diǎn)不在線上。那么要評(píng)價(jià)這條回歸線擬合的好壞,我們就需要對(duì)回歸模型進(jìn)行顯著性檢驗(yàn)。

4. 回歸方程的顯著性檢驗(yàn)

從回歸參數(shù)的公式二可知,在計(jì)算過程中并不一定要知道Y和X是否有線性相關(guān)的關(guān)系。如果不存相關(guān)關(guān)系,那么回歸方程就沒有任何意義了,如果Y和X是有相關(guān)關(guān)系的,即Y會(huì)隨著X的變化而線性變化,這個(gè)時(shí)候一元線性回歸方程才有意義。所以,我們需要用假設(shè)檢驗(yàn)的方法,來驗(yàn)證相關(guān)性的有效性。

通常會(huì)采用三種顯著性檢驗(yàn)的方法。

T檢驗(yàn)法:T檢驗(yàn)是檢驗(yàn)?zāi)P湍硞€(gè)自變量Xi對(duì)于Y的顯著性,通常用P-value判斷顯著性,小于0.01更小時(shí)說明這個(gè)自變量Xi與Y相關(guān)關(guān)系顯著。

F檢驗(yàn)法:F檢驗(yàn)用于對(duì)所有的自變量X在整體上看對(duì)于Y的線性顯著性,也是用P-value判斷顯著性,小于0.01更小時(shí)說明整體上自變量與Y相關(guān)關(guān)系顯著。

R^2(R平方)相關(guān)系統(tǒng)檢驗(yàn)法:用來判斷回歸方程的擬合程度,R^2的取值在0,1之間,越接近1說明擬合程度越好。

R語(yǔ)言中,上面列出的三種檢驗(yàn)的方法都已被實(shí)現(xiàn),我們只需要把結(jié)果解讀。上文中,我們已經(jīng)通過lm()函數(shù)構(gòu)建一元線性回歸模型,然后可以summary()函數(shù)來提取模型的計(jì)算結(jié)果。

> summary(lm.ab)      # 計(jì)算結(jié)果

Call:
lm(formula = y ~ 1 + x)

Residuals:
     Min       1Q   Median       3Q      Max
-11.9385  -2.2317  -0.1797   3.3546  10.2766

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) -3.495e+02  7.173e+01  -4.872 2.09e-06 ***
x            1.029e+00  5.111e-03 201.390  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.232 on 223 degrees of freedom
Multiple R-squared:  0.9945,    Adjusted R-squared:  0.9945
F-statistic: 4.056e+04 on 1 and 223 DF,  p-value: < 2.2e-16

模型解讀:

Call,列出了回歸模型的公式。

Residuals,列出了殘差的最小值點(diǎn),1/4分位點(diǎn),中位數(shù)點(diǎn),3/4分位點(diǎn),最大值點(diǎn)。

Coefficients,表示參數(shù)估計(jì)的計(jì)算結(jié)果。

Estimate,為參數(shù)估計(jì)列。Intercept行表示常數(shù)參數(shù)a的估計(jì)值 ,x行表示自變量x的參數(shù)b的估計(jì)值。

Std. Error,為參數(shù)的標(biāo)準(zhǔn)差,sd(a), sd(b)

t value,為t值,為T檢驗(yàn)的值

Pr(>|t|) ,表示P-value值,用于T檢驗(yàn)判定,匹配顯著性標(biāo)記

顯著性標(biāo)記,***為非常顯著,**為高度顯著, **為顯著,·為不太顯著,沒有記號(hào)為不顯著。

Residual standard error,表示殘差的標(biāo)準(zhǔn)差,自由度為n-2。

Multiple R-squared,為相關(guān)系數(shù)R^2的檢驗(yàn),越接近1則越顯著。

Adjusted R-squared,為相關(guān)系數(shù)的修正系數(shù),解決多元回歸自變量越多,判定系數(shù)R^2越大的問題。

F-statistic,表示F統(tǒng)計(jì)量,自由度為(1,n-2),p-value:用于F檢驗(yàn)判定,匹配顯著性標(biāo)記。

通過查看模型的結(jié)果數(shù)據(jù),我們可以發(fā)現(xiàn)通過T檢驗(yàn)的截距和自變量x都是非常顯著,通過F檢驗(yàn)判斷出整個(gè)模型的自變量是非常顯著,同時(shí)R^2的相關(guān)系數(shù)檢驗(yàn)可以判斷自變量和因變量是高度相關(guān)的。

最后,我們通過的回歸參數(shù)的檢驗(yàn)與回歸方程的檢驗(yàn),得到最后一元線性回歸方程為:

Y = -349.493 + 1.029315 * X

5. 殘差分析和異常點(diǎn)檢測(cè)

在得到的回歸模型進(jìn)行顯著性檢驗(yàn)后,還要在做殘差分析(預(yù)測(cè)值和實(shí)際值之間的差),檢驗(yàn)?zāi)P偷恼_性,殘差必須服從正態(tài)分布N(0,σ^2)。

我們可以自己計(jì)算數(shù)據(jù)殘差,并進(jìn)行正態(tài)分布檢驗(yàn)。

# 殘差 > y.res<-residuals(lm.ab) # 打印前6條數(shù)據(jù) > head(y.res) 1 2 3 4 5 6 6.8888680 1.3025744 1.3025744 6.3025744 5.5697074 0.7162808 # 正態(tài)分布檢驗(yàn) > shapiro.test(y.res) Shapiro-Wilk normality test data: y.res W = 0.98987, p-value = 0.1164 # 畫出殘差散點(diǎn)圖 > plot(y.res)

對(duì)殘差進(jìn)行Shapiro-Wilk正態(tài)分布檢驗(yàn),W接近1,p-value>0.05,證明數(shù)據(jù)集符合正態(tài)分布!關(guān)于正態(tài)分布的介紹,請(qǐng)參考文章 常用連續(xù)型分布介紹及R語(yǔ)言實(shí)現(xiàn) 。

同時(shí),我們也可以用R語(yǔ)言的工具生成4種用于模型診斷的圖形,簡(jiǎn)化自己寫代碼計(jì)算的操作。

# 畫圖,回車展示下一張
> plot(lm.ab)    
Hit
   
  to see next plot:   # 殘差擬合圖
Hit


 to see next plot: # 殘差QQ圖
Hit

 to see next plot: # 標(biāo)準(zhǔn)化的殘差對(duì)擬合值
Hit

 to see next plot: # 標(biāo)準(zhǔn)化殘差對(duì)杠桿值

圖1,殘差和擬合值對(duì)比圖

對(duì)殘差和擬合值作圖,橫坐標(biāo)是擬合值,縱坐標(biāo)是殘差。殘差和擬合值之間,數(shù)據(jù)點(diǎn)均勻分布在y=0兩側(cè),呈現(xiàn)出隨機(jī)的分布,紅色線呈現(xiàn)出一條平穩(wěn)的曲線并沒有明顯的形狀特征,說明殘差數(shù)據(jù)表現(xiàn)非常好。

圖2,殘差QQ圖

殘差QQ圖,用來描述殘差是否符合正態(tài)分布。圖中的數(shù)據(jù)點(diǎn)按對(duì)角直線排列,趨于一條直線,并被對(duì)角直接穿過,直觀上符合正態(tài)分布。對(duì)于近似服從正態(tài)分布的標(biāo)準(zhǔn)化殘差,應(yīng)該有 95% 的樣本點(diǎn)落在 [-2,2] 區(qū)間內(nèi)。

圖3,標(biāo)準(zhǔn)化殘差平方根和擬合值對(duì)比圖

對(duì)標(biāo)準(zhǔn)化殘差平方根和擬合值作圖,橫坐標(biāo)是擬合值,縱坐標(biāo)是標(biāo)準(zhǔn)化后的殘差平方根。與殘差和擬合值對(duì)比圖(圖1)的判斷方法類似,數(shù)據(jù)隨機(jī)分布,紅色線呈現(xiàn)出一條平穩(wěn)的曲線,無明顯的形狀特征。

圖4,標(biāo)準(zhǔn)殘差和杠桿值對(duì)比圖

對(duì)標(biāo)準(zhǔn)化殘差和杠桿值作圖,虛線表示的cooks距離等高線,通常用Cook距離度量的回歸影響點(diǎn)。本圖中沒有出現(xiàn)紅色的等高線,則說明數(shù)據(jù)中沒有特別影響回歸結(jié)果的異常點(diǎn)。

如果想把把4張圖畫在一起進(jìn)行展示,可以改變畫布布局。

> par(mfrow=c(2,2))
> plot(lm.ab)

看到上面4幅中,每幅圖上都有一些點(diǎn)被特別的標(biāo)記出來了,這些點(diǎn)是可能存在的異常值點(diǎn),如果要對(duì)模型進(jìn)行優(yōu)化,我們可以從這些來入手。但終于本次殘差分析的結(jié)果已經(jīng)很好了,所以對(duì)于異常點(diǎn)的優(yōu)化,可能并不能明顯的提升模型的效果。

從圖中發(fā)現(xiàn),索引編號(hào)為27和192的2個(gè)點(diǎn)在多幅圖中出現(xiàn)。我們假設(shè)這2個(gè)點(diǎn)為異常點(diǎn),從數(shù)據(jù)中去掉這2個(gè)點(diǎn),再進(jìn)行顯著性檢驗(yàn)和殘差分析。

# 查看27和192
> df[c(27,192),]
                    zn1.Close zn2.Close
2016-03-01 09:27:00     14130     14205
2016-03-01 14:27:00     14035     14085

# 新建數(shù)據(jù)集,去掉27和192
> df2<-df[-c(27,192),]

回歸建模和顯著性檢驗(yàn)。

> x2<-as.numeric(df2[,1])
> y2<-as.numeric(df2[,2])
> lm.ab2<-lm(y2 ~ 1+x2)
> summary(lm.ab2)

Call:
lm(formula = y2 ~ 1 + x2)

Residuals:
    Min      1Q  Median      3Q     Max
-9.0356 -2.1542 -0.2727  3.3336  9.5879

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) -3.293e+02  7.024e+01  -4.688 4.83e-06 ***
x2           1.028e+00  5.004e-03 205.391  < 2e-16 ***
---
Signif. codes:  
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.117 on 221 degrees of freedom
Multiple R-squared:  0.9948,    Adjusted R-squared:  0.9948
F-statistic: 4.219e+04 on 1 and 221 DF,  p-value: < 2.2e-16

對(duì)比這次的顯著性檢驗(yàn)結(jié)果和之前結(jié)果,T檢驗(yàn),F(xiàn)檢驗(yàn) 和 R^2檢驗(yàn),并沒有明顯的效果提升,結(jié)果和我預(yù)想的是一樣的。所以,通過殘差分析和異常點(diǎn)分析,我認(rèn)為模型是有效的。

6. 模型預(yù)測(cè)

最后,我們獲得了一元線性回歸方程的公式,就可以對(duì)數(shù)據(jù)進(jìn)行預(yù)測(cè)了。比如,對(duì)給定X=x0時(shí),計(jì)算出y0=a+b*x0的值,并計(jì)算出置信度為1-α的預(yù)測(cè)區(qū)間。

當(dāng)X=x0,Y=y0時(shí),置信度為1-α的預(yù)測(cè)區(qū)間為

我們可以用R語(yǔ)言的predict()函數(shù)來計(jì)算預(yù)測(cè)值y0,和相應(yīng)的預(yù)測(cè)區(qū)間。程序算法如下。

> new<-data.frame(x=14040)
> lm.pred<-predict(lm.sol,new,interval="prediction",level=0.95)

# 預(yù)測(cè)結(jié)果
> lm.pred
       fit      lwr      upr
1 14102.09 14093.73 14110.44

當(dāng)x0=14040時(shí),在預(yù)測(cè)區(qū)間為0.95的概率時(shí),y0的值為 14102,預(yù)測(cè)區(qū)間為[14093.73,14110.44]。

我們通過圖形來表示。

> plot(y~x+1)
> abline(lm.ab,col='red')
> points(rep(newX$x,3),y=lm.pred,pch=19,col=c('red','blue','green'))

其中,紅色點(diǎn)為y0的值,藍(lán)色點(diǎn)為預(yù)測(cè)區(qū)間最小值,綠色點(diǎn)為預(yù)測(cè)區(qū)間最大值。

對(duì)于統(tǒng)計(jì)模型中最核心部分就在結(jié)果解讀,本文介紹了一元回歸模型的基本的建模過程和模型的詳細(xì)解讀方法。在我們掌握了這種方法以后,就可以更容易地理解和學(xué)習(xí) 多元回歸,非線性回歸 等更多的模型,并把這些模型應(yīng)用到實(shí)際的工作中了。



數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }