導航:首頁 > 編程語言 > python樣本比例檢驗

python樣本比例檢驗

發布時間:2022-09-10 22:17:29

㈠ 怎麼用python算p值和t檢驗

引入相關模塊,這次我們使用stats的
產生兩列隨機變數,用到了stats。norm.rvs,參數loc表示平均數,scale表示標准差,size是樣本量這是產生的兩個變數的數據的一部分
ttest_rel的用法:輸出t和p值從p值可以看出,這兩列數據是沒有差異的。
當然,ttest_rel還可以接受pandas.DataFrame數據,先從excel中讀取數據我們可以看一下數據的基本內容:
我們可以選擇scoreA和ScoreB這兩列數據進行T檢驗輸出的結果可見兩列變數均值無差異
我們還可以同時對多個變數進行檢驗,比如:這是產生的結果可見:第一個array表示t值,兩個表示p值,因此我們可以知道p(scoreA)=0.126>0.05

㈡ python隨機森林分類模型,測試集和訓練集的樣本數沒有準確按照70%和30%分配

進行比例劃分的時候 從 int 型 轉化為了 float 型, float型總是會有微小的誤差的,這個不是大問題。
比如你輸入 1- 0.9 , 可能返回 0.1, 也可能返回0.09999999 或者 0.100000000001 , 這是計算機存儲機制導致的。

㈢ 如何用python寫 數據分析工具

㈣ 相關比例檢驗

網站投放廣告的時候,一開始給大家看到的落地頁是訪問課程資料,現在又推出了開始免費試學這個落地頁,網站的兩個不同的落地頁(老版本,新版本),想知道哪個版本的落地頁能帶來更多的轉化率,這時候就要檢測兩個落地頁的轉化效果,下面是測試的24天數據

#讀取數據

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

%matplotlib inline

df = pd.read_csv('C:/Users/mxl/Desktop/小鳥計劃/ab_data.csv')

df.head()

user_id-用戶,timestamp-用戶訪問頁面的時間,group-舊方案control和新方案trement分組, landing_page-落地頁是舊頁(訪問課程資料)或新頁(開始免費試學),converted-1表示已轉化

#查看每一列的數據類型

df.dtypes

#描述統計信息

df.describe()

#數據集中有treament和new_page不一致的數據,要對數據集中的這些數據進行剔除,觀察treatment有寫成treament

df.loc[(df["group"] == "treatment")!=(df["landing_page"] == "new_page")].count()

#剔除錯誤記錄,剩下的作為測試數據

df_test = df.loc[~((df["group"] == "treatment")!=(df["landing_page"] == "new_page"))]

#查看有沒有重復用戶,若有就去重

df_test.user_id.nunique()

#對重復的數據用plicate進行刪除,對象是User_id,保留第一個

df_test = df_test.drop_plicates(subset=["user_id"],keep='first')

#樣本均值

a_mean=df_test.loc[df_test['landing_page']=='new_page']['converted'].mean()

b_mean=df_test.loc[df_test['landing_page']=='old_page']['converted'].mean()

#樣本數量

n_a=df_test.loc[df_test['group']=='treatment'].shape[0]

n_b=df_test.loc[df_test['group']=='control'].shape[0]

print('A版本平均值=',a_mean,'轉化量')

print('B版本平均值=',b_mean,'轉化量')

自變數是指原因。因變數是指結果,也就是自變數發生變化導致改變的值就是因變數。

自變數:我們有兩組實驗數據,第一組是落地頁是新網頁。第二組落地頁是舊網頁。所以自變數是落地頁的類型

因變數:落地頁帶來的轉化量

所以,我們要考察的是自變數(落地頁)兩種情況下對因變數(網頁成交轉化量)的影響。

測試用戶分為兩部分,一部分用新頁面A,一部分用舊頁面B,經過一定時間後,收集到兩方案的觀測數據,要研究的問題是A和B方案的轉化率的差異性。由於我們期望是A方案頁面的成交轉化率高於B方案頁面的成交轉化率,所以提出下面兩個互為相反的假設:

零假設:u_a-u_b= 0

零假設總是表述為研究沒有改變,沒有效果,不起作用等。

備選假設:u_a-u_b>0

A版本和B版本有差別,也就是A版本平均值大於B版本平均值。

由於兩種數據是相關樣本,採用的是相關比例檢驗

相關比例檢驗只關注每組數據相關比例的差值

備選假設是A版本和B版本有差別,也就是A版本轉化率平均值大於B版本轉化率平均值,所以我們使用右尾檢驗。

在零假設成立前提下,得到樣本平均值的概率p是多少?

'''用python統計包statsmodels.stats.proportion.proportions_ztest自動計算

'''

#導入統計模塊

import statsmodels.stats.proportion as sm

#計算轉化在新網頁和舊網頁的樣本比例

convert_new = df_test.query('group == "treatment" & converted == 1').shape[0]

convert_old = df_test.query('group == "control" & converted == 1').shape[0]

z_score,p_value = sm.proportions_ztest([convert_new,convert_old],[n_a,n_b],alternative='smaller')

這里alternative表示備擇假設可以是雙側檢驗two-sided,也可以是單側檢驗之一,smaller表示備擇假設為prop < value,較大的表示prop >value。在兩個樣本檢驗中,smaller表示備擇假設為p1 < p2,較大的表示p1 > p2,其中p1為第一個樣本比例,p2第二個樣本的比例。

z_score,p_value

顯著水平 alpha=0.05

#右尾判斷條件:p_value<alpha時,拒絕原假設

if(p_value<alpha):

    print('拒絕零假設,有統計顯著,也就是接受備選假設')

    print('備選假設:A版本和B版本有差異')

else:

    print('接受零假設,沒有統計顯著')

    print('零假設:A版本和B版本沒有差異')

#1)置信水平對於的z值

#2)計算上下限

#置信區間上限=樣本平均值-z_score*標准誤差

#置信區間下限=樣本平均值+z_score*標准誤差

a=(a_mean-b_mean)-z_score*np.sqrt(a_mean*(1-a_mean)/n_a + b_mean*(1-b_mean)/n_b)

b=(a_mean-b_mean)+z_score*np.sqrt(a_mean*(1-a_mean)/n_a + b_mean*(1-b_mean)/n_b)

#總體比例差平均值差值對應的值是0

pop_mean=0

#樣本比例差平均值差值對應的值是0

sample_mean=a_mean-b_mean

#總體比例差平均值差值的標准差

sample_std=np.sqrt(a_mean*(1-a_mean)/n_a + b_mean*(1-b_mean)/n_b)

d=(sample_mean - pop_mean) / sample_std

print('d=',d)

A版本平均值= 0.11880806551510564 轉化量

B版本平均值= 0.1203863045004612 轉化量

1)假設檢驗

本次假設檢驗是基於正態(z)檢驗的比例檢驗 z_score=-1.3109241984234394,p_value=0.094941687240975514,單側檢驗(右側) 統計上不存在顯著差異,接受零假設

2)置信區間

總體比例差的95%的置信區間 CI=[-3.5520257269348876e-09,-0.0031564744186853865]

3)效應量

d= -1.31092714883,效果顯著

參考鏈接:

1、數據集

2、數據分析AB測試實戰項目

㈤ 數據分析員用python做數據分析是怎麼回事,需要用到python中的那些內容,具體是怎麼操作的

大數據!大數據!其實是離不開數據二字,但是總體來講,自己之前對數據的認知是不太夠的,更多是在關注技術的提升上。換句話講,自己是在做技術,這些技術處理的是數據,而不能算是自己是在做數據的。大規模數據的處理是一個非常大的課題,但是這一點更偏向於是搞技術的。

與數據分析相關的Python庫很多,比如Numpy、pandas、matplotlib、scipy等,數據分析的操作包括數據的導入和導出、數據篩選、數據描述、數據處理、統計分析、可視化等等。接下來我們看一下如何利用Python完成數據的分析。
生成數據表
常見的生成方法有兩種,第一種是導入外部數據,第二種是直接寫入數據,Python支持從多種類型的數據導入。在開始使用Python進行數據導入前需要先導入pandas庫,為了方便起見,我們也同時導入Numpy庫。代碼是最簡模式,裡面有很多可選參數設置,例如列名稱、索引列、數據格式等等。
檢查數據表
Python中使用shape函數來查看數據表的維度,也就是行數和列數。你可以使用info函數查看數據表的整體信息,使用dtypes函數來返回數據格式。Isnull是Python中檢驗空值的函數,你可以對整個數據表進行檢查,也可以單獨對某一列進行空值檢查,返回的結果是邏輯值,包含空值返回True,不包含則返回False。使用unique函數查看唯一值,使用Values函數用來查看數據表中的數值。
數據表清洗
Python中處理空值的方法比較靈活,可以使用Dropna函數用來刪除數據表中包含空值的數據,也可以使用fillna函數對空值進行填充。Python中dtype是查看數據格式的函數,與之對應的是astype函數,用來更改數據格式,Rename是更改列名稱的函數,drop_plicates函數刪除重復值,replace函數實現數據替換。
數據預處理
數據預處理是對清洗完的數據進行整理以便後期的統計和分析工作,主要包括數據表的合並、排序、數值分列、數據分組及標記等工作。在Python中可以使用merge函數對兩個數據表進行合並,合並的方式為inner,此外還有left、right和outer方式。使用ort_values函數和sort_index函數完成排序,使用where函數完成數據分組,使用split函數實現分列。
數據提取
主要是使用三個函數:loc、iloc和ix,其中loc函數按標簽值進行提取,iloc按位置進行提取,ix可以同時按標簽和位置進行提取。除了按標簽和位置提起數據以外,還可以按具體的條件進行數據,比如使用loc和isin兩個函數配合使用,按指定條件對數據進行提取。
數據篩選匯總
Python中使用loc函數配合篩選條件來完成篩選功能,配合sum和 count函數還能實現excel中sumif和countif函數的功能。Python中使用的主要函數是groupby和pivot_table。groupby是進行分類匯總的函數,使用方法很簡單,制定要分組的列名稱就可以,也可以同時制定多個列名稱,groupby 按列名稱出現的順序進行分組。

㈥ 如何用Python進行線性回歸以及誤差分析

數據挖掘中的預測問題通常分為2類:回歸與分類。

簡單的說回歸就是預測數值,而分類是給數據打上標簽歸類。

本文講述如何用Python進行基本的數據擬合,以及如何對擬合結果的誤差進行分析。

本例中使用一個2次函數加上隨機的擾動來生成500個點,然後嘗試用1、2、100次方的多項式對該數據進行擬合。

擬合的目的是使得根據訓練數據能夠擬合出一個多項式函數,這個函數能夠很好的擬合現有數據,並且能對未知的數據進行預測。

代碼如下:

㈦ python pandas的describe的25%是什麼意思

25%, 50%和75%是對應的四分位數。

四分位數(Quartile)是指在統計學中把所有數值由小到大排列並分成四等份,處於三個分割點位置的數值。

第一四分位數 (Q1),又稱「較小四分位數」,等於該樣本中所有數值由小到大排列後第25%的數字。

第二四分位數 (Q2),又稱「中位數」,等於該樣本中所有數值由小到大排列後第50%的數字。

第三四分位數 (Q3),又稱「較大四分位數」,等於該樣本中所有數值由小到大排列後第75%的數字。

第三四分位數與第一四分位數的差距又稱四分位距(InterQuartile Range,IQR)。

㈧ Python中的加權隨機樣本問題,怎麼解決

我們平時比較多會遇到的一種情景是從一堆的數據中隨機選擇一個, 大多數我們使用random就夠了, 但是假如我們要選取的這堆數據分別有自己的權重, 也就是他們被選擇的概率是不一樣的, 在這種情況下, 就需要使用加權隨機來處理這些數據
1. 簡單線性方法
下面是一種簡單的方案, 傳入權重的列表(weights), 然後會返回隨機結果的索引值(index), 比如我們傳入[2, 3, 5], 那麼就會隨機的返回0(概率0.2), 1(概率0.3), 2(概率0.5)
簡單的思路就是把所有的權重加和, 然後隨機一個數, 看看落在哪個區間
import random

def weighted_choice(weights):
totals = []
running_total = 0

for w in weights:
running_total += w
totals.append(running_total)

rnd = random.random() * running_total
for i, total in enumerate(totals):
if rnd < total:
return i

2. 加速搜索
上面這個方法看起來非常簡單, 已經可以完成我們所要的加權隨機, 然是最後的這個for循環貌似有些啰嗦, Python有個內置方法bisect可以幫我們加速這一步
import random
import bisect

def weighted_choice(weights):
totals = []
running_total = 0

for w in weights:
running_total += w
totals.append(running_total)

rnd = random.random() * running_total
return bisect.bisect_right(totals, rnd)

bisect方法可以幫我們查找rnd在totals裡面應該插入的位置, 兩個方法看起來差不多, 但是第二個會更快一些, 取決於weights這個數組的長度, 如果長度大於1000, 大約會快30%左右
3. 去掉臨時變數
其實在這個方法裡面totals這個數組並不是必要的, 我們調整下策略, 就可以判斷出weights中的位置
def weighted_choice(weights):
rnd = random.random() * sum(weights)
for i, w in enumerate(weights):
rnd -= w
if rnd < 0:
return i

這個方法比第二種方法竟然快了一倍, 當然, 從演算法角度角度, 復雜度是一樣的, 只不過我們把賦值臨時變數的功夫省下來了, 其實如果傳進來的weights是已經按照從大到小排序好的話, 速度會更快, 因為rnd遞減的速度最快(先減去最大的數)
4. 更多的隨機數
如果我們使用同一個權重數組weights, 但是要多次得到隨機結果, 多次的調用weighted_choice方法, totals變數還是有必要的, 提前計算好它, 每次獲取隨機數的消耗會變得小很多
class WeightedRandomGenerator(object):
def __init__(self, weights):
self.totals = []
running_total = 0

for w in weights:
running_total += w
self.totals.append(running_total)

def next(self):
rnd = random.random() * self.totals[-1]
return bisect.bisect_right(self.totals, rnd)

def __call__(self):
return self.next()

在調用次數超過1000次的時候, WeightedRandomGenerator的速度是weighted_choice的100倍
所以我們在對同一組權重列表進行多次計算的時候選擇方法4, 如果少於100次, 則使用方法3
5. 使用accumulate
在python3.2之後, 提供了一個itertools.accumulate方法, 可以快速的給weights求累積和
>>>> from itertools import accumulate
>>>> data = [2, 3, 5, 10]
>>>> list(accumulate(data))
[2, 5, 10, 20]

㈨ Python中如何實現分層抽樣

分層抽樣也叫按比例抽樣,根本樣本在總體中所佔的比例進行抽樣

㈩ 初學python,怎樣用python做pearson相關系數的檢驗呢,求指導啊

scipy.stats.pearsonr(x, y)

x和y為相同長度的兩組數據

返回值 r, p-value

r是相關系數,取值-1~1. 表示線性相關程度
p-value越小,表示相關程度越顯著。按照文檔的說法「The p-values are not entirely reliable but are probably reasonable for datasets larger than 500 or so.」,p-value在500個樣本值以上有較高的可靠性

閱讀全文

與python樣本比例檢驗相關的資料

熱點內容
華為交換機dhcp配置命令 瀏覽:314
androidbitmap縮小 瀏覽:270
單片機串口控制燈 瀏覽:83
大訊雲伺服器安裝視頻 瀏覽:783
華為演算法領先世界 瀏覽:653
linux路由重啟 瀏覽:565
php的模板編程 瀏覽:319
編譯器原理與實現書 瀏覽:708
dos選擇命令 瀏覽:16
apm固件編譯到單片機 瀏覽:120
聯通深藍卡都包含什麼app 瀏覽:263
如何判斷網路伺服器正常 瀏覽:649
路由器搭橋遠端伺服器地址是什麼 瀏覽:516
編譯動態庫時會連接依賴庫嗎 瀏覽:708
淘寶手機加密是隨機的嗎 瀏覽:672
解壓包子怎麼裝飾 瀏覽:586
四個數湊24演算法 瀏覽:676
哪一種不是vi編譯器的模式 瀏覽:170
xp在此處打開命令窗口 瀏覽:128
代碼編譯運行用什麼軟體 瀏覽:999