統計理論_統計

來源:互聯網
上載者:User
假設檢驗 分布檢驗 位置檢驗 彌散實驗 Ansari-Bradley

在matlab中,可使用ansaribradley進行Ansari-Bradley檢驗。 Bartlett’s test

巴特利特球形(Bartlett’s test)檢驗用來對虛假設進行檢驗。它以變數的相關係數矩陣為出發點。它的零假設相關係數矩陣是一個單位陣,即相關係數矩陣對角線上的所有元素都是1,所有非對角線上的元素都為零。巴特利特球形檢驗的統計量是根據相關係數矩陣的行列式得到的。如果該值較大,且對應的相伴機率值小於使用者心中的顯著性水平,那麼應該拒絕零假設,認為相關係數不可能是單位陣,即原始變數之間存在相關性,適合於作因子分析;相反,則不適合作因子分析。
Bartlett統計檢驗的日期運算式為:
χ2=(N−k)ln(S2p)−∑ki=1(ni−1)ln(S2i)1+13(k−1)(∑ki=1(1ni−1)−1N−k)
其中,第 k 個樣本的大小為 ni ,其樣本方差為 S2i ; N=∑i=1kni , S2p=1N−k∑i(ni−1)S2i 是方差的聯合估計。
在matlab中使用Barttest函數來進行Bartlett檢驗。

方差分析

方差分析(ANOVA)是從觀測變數的方差入手,研究諸多控制變數中哪些變數是對觀測變數有顯著影響的變數。 資料降維

特徵變換技術通過將資料變換到新的特徵來降低資料的維數。
當變數變換不可行時(如資料中的分類變數),特徵選取技術更加適合。特徵選取技術特別適合於最小二乘擬合。 因子分析(Factor analysis)

在Matlab中可使用factoran來進行因子分析。 迴歸演算法 嶺迴歸

嶺迴歸(英文名:ridge regression, Tikhonov regularization)是一種專用於共線性資料分析的有偏估計迴歸方法,實質上是一種改良的最小二乘估計法,通過放棄最小二乘法的無偏性,以損失部分資訊、降低精度為代價獲得迴歸係數更為符合實際、更可靠的迴歸方法,對病態資料的擬合要強於最小二乘法。
當 XTX 的行列式接近於0時,我們將其主對角元素都加上一個數 k ,可以使 XTX 奇異的風險大大降低。於是:
B(k)=(XTX+kI)−1XTY
隨著k的增大, B(k) 中各元素 bi(k) 的絕對值均趨於不斷變小,它們相對於正確值 bi 的偏差也越來越大。 k 趨於無窮大時, B(k) 趨於0。 b(k) 隨 k 的改變而變化的軌跡,就稱為嶺跡。實際計算中可選非常多的 k 值,做出一個嶺跡圖,看看這個圖在取哪個值的時候變穩定了,那就確定 k 值了。

相關分析

經典的線性相關分析方法難以有效探測資料的內豐結構與規律,基於互資訊的度量準則,由於其具有能夠有效刻畫非線性相關係數的優勢,而日益受到重視。
考慮有 n 個可能結果的隨機變數 X ,其機率分布為 P(X=xi)=pi,i=12,...,n 。則其資訊熵的定義為 H(X)=−∑i=1npilogpi 。
Suppose that the joint probability of the stochastic variables (X,Y) is pij , the two-dimensional entropy of (X,Y) is
H(X,Y)=−∑i=1n∑j=1mpijlogpij
Suppose that the marginal distribution of X and Y repectively are pi and pj˙ , the conditional entropy X under the conditon of kowning Y can be defined as
H(X/Y)=−∑i=1n∑j=1mpijlogpijp⋅j
similarity, the conditional entropy of Y under the conditon of kowning X can be defined as
H(Y/X)=−∑i=1n∑j=1mpijlogpijpi⋅
資訊理論認為,系統越有序,則資訊熵越小;相反地,系統越混亂,則資訊熵越大.因此,資訊熵可以作為系統不確定性程度(或者說有序化程度)的度量標準.

最大資訊係數

最大資訊係數(MIC) 傳統的相關係數往往是針對特定的函數類型(如線性、指數、周期性函數)測量變數之間的相關性程度,而最大資訊係數可測量任何函數形式的相關性,所以最大資訊係數具有通用性;對於具有相等最大資訊係數取值的不同函數形式的資料而言,當給予同等程度的噪音,最大資訊係數的取值仍然保持相等,所以最大資訊係數具有均等性。
計算MIC可以使用minepy包,這個包有matlab、python和r版本,這個包可以到它的官網上進行下載。
相應的python常式1:

import numpy as npfrom minepy import MINEdef print_stats(mine):    print "MIC", mine.mic()x = np.linspace(0, 1, 1000)y = np.sin(10 * np.pi * x) + xmine = MINE(alpha=0.6, c=15)mine.compute_score(x, y)print "Without noise:"print_stats(mine)printnp.random.seed(0)y +=np.random.uniform(-1, 1, x.shape[0]) # add some noisemine.compute_score(x, y)print "With noise:"print_stats(mine)

python常式2:

from __future__ import divisionimport numpy as npimport matplotlib.pyplot as pltfrom minepy import MINEdef mysubplot(x, y, numRows, numCols, plotNum,              xlim=(-4, 4), ylim=(-4, 4)):    r = np.around(np.corrcoef(x, y)[0, 1], 1)    mine = MINE(alpha=0.6, c=15)    mine.compute_score(x, y)    mic = np.around(mine.mic(), 1)    ax = plt.subplot(numRows, numCols, plotNum,                     xlim=xlim, ylim=ylim)    ax.set_title('Pearson r=%.1f\nMIC=%.1f' % (r, mic),fontsize=10)    ax.set_frame_on(False)    ax.axes.get_xaxis().set_visible(False)    ax.axes.get_yaxis().set_visible(False)    ax.plot(x, y, ',')    ax.set_xticks([])    ax.set_yticks([])    return axdef rotation(xy, t):    return np.dot(xy, [[np.cos(t), -np.sin(t)],                       [np.sin(t), np.cos(t)]])def mvnormal(n=1000):    cors = [1.0, 0.8, 0.4, 0.0, -0.4, -0.8, -1.0]    for i, cor in enumerate(cors):        cov = [[1, cor],[cor, 1]]        xy = np.random.multivariate_normal([0, 0], cov, n)        mysubplot(xy[:, 0], xy[:, 1], 3, 7, i+1)def rotnormal(n=1000):    ts = [0, np.pi/12, np.pi/6, np.pi/4, np.pi/2-np.pi/6,          np.pi/2-np.pi/12, np.pi/2]    cov = [[1, 1],[1, 1]]    xy = np.random.multivariate_normal([0, 0], cov, n)    for i, t in enumerate(ts):        xy_r = rotation(xy, t)        mysubplot(xy_r[:, 0], xy_r[:, 1], 3, 7, i+8)def others(n=1000):    x = np.random.uniform(-1, 1, n)    y = 4*(x**2-0.5)**2 + np.random.uniform(-1, 1, n)/3    mysubplot(x, y, 3, 7, 15, (-1, 1), (-1/3, 1+1/3))    y = np.random.uniform(-1, 1, n)    xy = np.concatenate((x.reshape(-1, 1), y.reshape(-1, 1)), axis=1)    xy = rotation(xy, -np.pi/8)    lim = np.sqrt(2+np.sqrt(2)) / np.sqrt(2)    mysubplot(xy[:, 0], xy[:, 1], 3, 7, 16, (-lim, lim), (-lim, lim))    xy = rotation(xy, -np.pi/8)    lim = np.sqrt(2)    mysubplot(xy[:, 0], xy[:, 1], 3, 7, 17, (-lim, lim), (-lim, lim))    y = 2*x**2 + np.random.uniform(-1, 1, n)    mysubplot(x, y, 3, 7, 18, (-1, 1), (-1, 3))    y = (x**2 + np.random.uniform(0, 0.5, n)) * \        np.array([-1, 1])[np.random.random_integers(0, 1, size=n)]    mysubplot(x, y, 3, 7, 19, (-1.5, 1.5), (-1.5, 1.5))    y = np.cos(x * np.pi) + np.random.uniform(0, 1/8, n)    x = np.sin(x * np.pi) + np.random.uniform(0, 1/8, n)    mysubplot(x, y, 3, 7, 20, (-1.5, 1.5), (-1.5, 1.5))    xy1 = np.random.multivariate_normal([3, 3], [[1, 0], [0, 1]], int(n/4))    xy2 = np.random.multivariate_normal([-3, 3], [[1, 0], [0, 1]], int(n/4))    xy3 = np.random.multivariate_normal([-3, -3], [[1, 0], [0, 1]], int(n/4))    xy4 = np.random.multivariate_normal([3, -3], [[1, 0], [0, 1]], int(n/4))    xy = np.concatenate((xy1, xy2, xy3, xy4), axis=0)    mysubplot(xy[:, 0], xy[:, 1], 3, 7, 21, (-7, 7), (-7, 7))plt.figure(facecolor='white')mvnormal(n=800)rotnormal(n=200)others(n=800)plt.tight_layout()plt.show()

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.