① 數據分析中的P值怎麼計算、什麼意義
一、P值計算方法
左側檢驗P值是當時,檢驗統計量小於或等於根據實際觀測樣本數據計算得到的檢驗統計量值的概率,即p值。
右側檢驗P值是當μ=μ0時,檢驗統計量大於或等於根據實際觀測樣本數據計算得到的檢驗統計量值的概率,即p值。
雙側檢驗P值是當μ=μ0時,檢驗統計量大於或等於根據實際觀測樣本數據計算得到的檢驗統計量值的概率,即p值。
二、P值的意義
P 值即概率,反映某一事件發生的可能性大小。統計學根據顯著性檢驗方法所得到的P 值,一般以P < 0.05 為顯著, P <0.01 為非常顯著,其含義是樣本間的差異由抽樣誤差所致的概率小於0.05 或0.01。
(1)怎麼利用p語言做數據分析擴展閱讀:
數據分析是指用適當的統計分析方法對收集來的大量數據進行分析,提取有用信息和形成結論而對數據加以詳細研究和概括總結的過程。這一過程也是質量管理體系的支持過程。在實用中,數據分析可幫助人們作出判斷,以便採取適當行動。
數據分析的數學基礎在20世紀早期就已確立,但直到計算機的出現才使得實際操作成為可能,並使得數據分析得以推廣。數據分析是數學與計算機科學相結合的產物。
在統計學領域,有些人將數據分析劃分為描述性統計分析、探索性數據分析以及驗證性數據分析;其中,探索性數據分析側重於在數據之中發現新的特徵,而驗證性數據分析則側重於已有假設的證實或證偽。
② 我想用檢驗兩組數據的相關性,應該怎麼做相關與「顯著性差異」的關系p怎麼求
顯著性0.229,高於0.05,所以這樣分析相關性不成立,而且樣本量太低了,最少30個樣本。
根據表現形式,可分為:模擬數據,由連續函數組成,是指在一定間隔內連續變化的物理量,也可分為圖形數據(如點、線、面)、符號數據、文本數據、圖像數據等,如聲音大小和溫度變化等。
(2)怎麼利用p語言做數據分析擴展閱讀:
技術標准:
當做出結論時,應該真正描述方向性(例如,明顯大於或明顯小於),sig值通常表示為P>0.05,表明沒有顯著差異,0.01<P<0.05表示顯著差異,P<0.01表示顯著差異。
如果在測試一個實驗中測量的數據,那麼當數據之間存在顯著差異時,實驗的零假設可以被推翻,並且替代假設測試得到支持,相反,如果數據之間沒有顯著差異,實驗的另一個假設可以被推翻,虛無主義的假設得到支持。
原理:
當數據之間具有了顯著性差異,就說明參與比對的數據不是來自於同一總體(Population),而是來自於具有差異的兩個不同總體,這種差異可能因參與比對的數據是來自不同實驗對象的,比如一些一般能力測驗中,大學學歷被試組的成績與小學學歷被試組會有顯著性差異。
案例:
例如,記憶術研究發現,被試學習某記憶法前的成績和學習記憶法後的記憶成績會有顯著性差異,這一差異很可能來自於學××記憶法對被試記憶能力的改變。
顯著性差異是一種有量度的或然性評價,比如,我們說A、B兩數據在0.05水平上具備顯著性差異,這是說兩組數據具備顯著性差異的可能性為95%。
兩個數據所代表的樣本還有5%的可能性是沒有差異的。這5%的差異是由於隨機誤差造成的。
③ 如何用python寫 數據分析工具
數據導入
導入本地的或者web端的CSV文件;
數據變換;
數據統計描述;
假設檢驗
單樣本t檢驗;
可視化;
創建自定義函數。
數據導入
這是很關鍵的一步,為了後續的分析我們首先需要導入數據。通常來說,數據是CSV格式,就算不是,至少也可以轉換成CSV格式。在Python中,我們的操作如下:
Python
1
2
3
4
5
6
7
8
import pandas as pd
# Reading data locally
df = pd.read_csv('/Users/al-ahmadgaidasaad/Documents/d.csv')
# Reading data from web
data_url = "t/Analysis-with-Programming/master/2014/Python/Numerical-Descriptions-of-the-Data/data.csv"
df = pd.read_csv(data_url)
為了讀取本地CSV文件,我們需要pandas這個數據分含旅析庫中的相應模塊。其中的read_csv函數能夠讀取本地和web數據。
數據變換仔洞
既然在工作空間有了數據,接下來就是數據變換。統計學家和科學家們通常會在這一步移除分析中的非必要數據。我們先看看數據:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Head of the data
print df.head()
# OUTPUT
0 12432934148330010553
1 41589235 4287806335257
2 17871922 19551074 4544
317152 14501 3536 1960731687
4 12662385 25303315 8520
# Tail of the data
print df.tail()
# OUTPUT
74 2505 20878 3519 1973716513
7560303 40065 7062 1942261808
76 63116756 3561 15910談戚凳23349
7713345 38902 2583 1109668663
78 2623 18264 3745 1678716900
對R語言程序員來說,上述操作等價於通過print(head(df))來列印數據的前6行,以及通過print(tail(df))來列印數據的後6行。當然Python中,默認列印是5行,而R則是6行。因此R的代碼head(df, n = 10),在Python中就是df.head(n = 10),列印數據尾部也是同樣道理。
在R語言中,數據列和行的名字通過colnames和rownames來分別進行提取。在Python中,我們則使用columns和index屬性來提取,如下:
Python
1
2
3
4
5
6
7
8
9
10
11
# Extracting column names
print df.columns
# OUTPUT
Index([u'Abra', u'Apayao', u'Benguet', u'Ifugao', u'Kalinga'], dtype='object')
# Extracting row names or the index
print df.index
# OUTPUT
Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78], dtype='int64')
數據轉置使用T方法,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Transpose data
print df.T
# OUTPUT
01 23 45 67 89
Abra1243 41581787171521266 5576 927215401039 5424
Apayao2934 92351922145012385 7452109917038138210588
Benguet148 42871955 353625307712796 24632592 1064
Ifugao3300
... 69 70 71 72 73 74 75 76 77
Abra ...12763 247059094 620913316 250560303 631113345
Apayao ...376251953235126 6335386132087840065 675638902
Benguet... 2354 4045 5987 3530 2585 3519 7062 3561 2583
Ifugao ... 9838171251894015560 774619737194221591011096
Kalinga...
78
Abra2623
Apayao 18264
Benguet 3745
Ifugao 16787
Kalinga16900
Other transformations such as sort can be done using<code>sort</code>attribute. Now let's extract a specific column. In Python, we do it using either<code>iloc</code>or<code>ix</code>attributes, but<code>ix</code>is more robust and thus I prefer it. Assuming we want the head of the first column of the data, we have
其他變換,例如排序就是用sort屬性。現在我們提取特定的某列數據。Python中,可以使用iloc或者ix屬性。但是我更喜歡用ix,因為它更穩定一些。假設我們需數據第一列的前5行,我們有:
Python
1
2
3
4
5
6
7
8
9
print df.ix[:, 0].head()
# OUTPUT
0 1243
1 4158
2 1787
317152
4 1266
Name: Abra, dtype: int64
順便提一下,Python的索引是從0開始而非1。為了取出從11到20行的前3列數據,我們有:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
print df.ix[10:20, 0:3]
# OUTPUT
AbraApayaoBenguet
109811311 2560
1127366 15093 3039
12 11001701 2382
13 7212 11001 1088
14 10481427 2847
1525679 15661 2942
16 10552191 2119
17 54376461734
18 10291183 2302
1923710 12222 2598
20 10912343 2654
上述命令相當於df.ix[10:20, ['Abra', 'Apayao', 'Benguet']]。
為了舍棄數據中的列,這里是列1(Apayao)和列2(Benguet),我們使用drop屬性,如下:
Python
1
2
3
4
5
6
7
8
9
print df.drop(df.columns[[1, 2]], axis = 1).head()
# OUTPUT
AbraIfugaoKalinga
0 1243330010553
1 4158806335257
2 17871074 4544
317152 1960731687
4 12663315 8520
axis參數告訴函數到底舍棄列還是行。如果axis等於0,那麼就舍棄行。
統計描述
下一步就是通過describe屬性,對數據的統計特性進行描述:
Python
1
2
3
4
5
6
7
8
9
10
11
12
print df.describe()
# OUTPUT
AbraApayaoBenguetIfugao Kalinga
count 79.000000 79.00000079.000000 79.000000 79.000000
mean 12874.37974716860.6455703237.39240512414.62025330446.417722
std16746.46694515448.1537941588.536429 5034.28201922245.707692
min927.000000401.000000 148.000000 1074.000000 2346.000000
25% 1524.000000 3435.5000002328.000000 8205.000000 8601.500000
50% 5790.00000010588.0000003202.00000013044.00000024494.000000
75%13330.50000033289.0000003918.50000016099.50000052510.500000
max60303.00000054625.0000008813.00000021031.00000068663.000000
假設檢驗
Python有一個很好的統計推斷包。那就是scipy裡面的stats。ttest_1samp實現了單樣本t檢驗。因此,如果我們想檢驗數據Abra列的稻穀產量均值,通過零假設,這里我們假定總體稻穀產量均值為15000,我們有:
Python
1
2
3
4
5
6
7
from scipy import stats as ss
# Perform one sample t-test using 1500 as the true mean
print ss.ttest_1samp(a = df.ix[:, 'Abra'], popmean = 15000)
# OUTPUT
(-1.1281738488299586, 0.26270472069109496)
返回下述值組成的元祖:
t : 浮點或數組類型
t統計量
prob : 浮點或數組類型
two-tailed p-value 雙側概率值
通過上面的輸出,看到p值是0.267遠大於α等於0.05,因此沒有充分的證據說平均稻穀產量不是150000。將這個檢驗應用到所有的變數,同樣假設均值為15000,我們有:
Python
1
2
3
4
5
6
print ss.ttest_1samp(a = df, popmean = 15000)
# OUTPUT
(array([ -1.12817385, 1.07053437, -65.81425599,-4.564575, 6.17156198]),
array([2.62704721e-01, 2.87680340e-01, 4.15643528e-70,
1.83764399e-05, 2.82461897e-08]))
第一個數組是t統計量,第二個數組則是相應的p值。
可視化
Python中有許多可視化模塊,最流行的當屬matpalotlib庫。稍加提及,我們也可選擇bokeh和seaborn模塊。之前的博文中,我已經說明了matplotlib庫中的盒須圖模塊功能。
;
重復100次; 然後
計算出置信區間包含真實均值的百分比
Python中,程序如下:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import numpy as np
import scipy.stats as ss
def case(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
m = np.zeros((rep, 4))
for i in range(rep):
norm = np.random.normal(loc = mu, scale = sigma, size = n)
xbar = np.mean(norm)
low = xbar - ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
up = xbar + ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
if (mu > low) & (mu < up):
rem = 1
else:
rem = 0
m[i, :] = [xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}
上述代碼讀起來很簡單,但是循環的時候就很慢了。下面針對上述代碼進行了改進,這多虧了Python專家,看我上篇博文的15條意見吧。
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import scipy.stats as ss
def case2(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
scaled_crit = ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
norm = np.random.normal(loc = mu, scale = sigma, size = (rep, n))
xbar = norm.mean(1)
low = xbar - scaled_crit
up = xbar + scaled_crit
rem = (mu > low) & (mu < up)
m = np.c_[xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}
更新
那些對於本文ipython notebook版本感興趣的,請點擊這里。這篇文章由Nuttens Claude負責轉換成ipython notebook 。
④ 誰有利用python進行數據分析 pdf 的中文 完整版的,求發一下
目錄
前言 1
第1章 准備工作 5
本書主要內容 5
為什麼要使用Python進行數據分析 6
重要的Python庫 7
安裝和專設置 10
社區和研討屬會 16
使用本書 16
致謝 18
第2章 引言 20
來自bit.ly的1.usa.gov數據 21
MovieLens 1M數據集 29
1880—2010年間全美嬰兒姓名 35
小結及展望 47
第3章 IPython:一種互動式計算和開發環境 48
IPython基礎 49
內省 51
使用命令歷史 60
與操作系統交互 63
軟體開發工具 66
IPython HTML Notebook 75
利用IPython提高代碼開發效率的幾點提示 77
高級IPython功能 79
致謝 81
第4章 NumPy基礎:數組和矢量計算 82
NumPy的ndarray:一種多維數組對象 83
通用函數:快速的元素級數組函數 98
利用數組進行數據處理 100
用於數組的文件輸入輸出 107
線性代數 109
隨機數生成 111
範例:隨機漫步 112
第5章 pandas入門 115
pandas的數據結構介紹 116
基本功能 12...
網頁鏈接