T分布在醫葯領域應用-python建模


python機器學習-乳腺癌細胞挖掘(博主親自錄制視頻)https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share

 

 

原創作者toby,機器學習,統計項目聯系QQ:231469242

 

 

 

 

學生t-分布可簡稱為t分布。其推導由威廉·戈塞於1908年首先發表,當時他還在都柏林的健力士釀酒廠工作。因為不能以他本人的名義發表,所以論文使用了學生(Student)這一筆名。之后t檢驗以及相關理論經由羅納德·費雪的工作發揚光大,而正是他將此分布稱為學生分布。

要理解此文章,需要理解正太分布的基礎知識,否則不能看懂。根據大數定理,樣本越多,樣本估算參數就越接近總體參數。但實際生活中,因為時間和費用,我們一般用小樣本數據代替整體數據。

T分布的特征|:

T分布屬性1:曲線下面總面積為1

T分布屬性2:曲線以0為對稱中心,比正態分布更加扁平
T分布屬性3:曲線向左右方向無限延伸,但沒有碰到x軸
T分布屬性4:自由度增加時(樣本增加),T分布接近正態分布,T分布擁有更大標准差。如果樣本數量大於30,數據分布近似正態分布;如果樣本量小於30,數據分布呈T分布

 

自由度是一個非常復雜的概念,很多專業人士避而不談自由度。簡單理解,T分布的自由度=樣本量-1

 

Z分數公式到t分數公式 ,如果樣本數量大於30,用正態分布公式;如果樣本量小於30,用T分布公式

 

經過大量圖文講解,我們知道了T分布的基礎知識。接下來我們了解T分布在醫葯領域用途。

T分布在醫葯領域有廣泛用途,因為臨床實驗有0-4期,跨越時間長達數年,花費高(上億)。臨床實驗每一期需要大量資金投入,病人樣本量越多,葯企花費越高。如果樣本量小於30時,我們可以采用T分布分析。所以T分布在醫葯領域很受歡迎,因為可以節約大量開支。

⑴Ⅰ期臨床試驗:是在人體進行新葯研究的起始期,主要目的是研究人對新葯的耐受程度,了解新葯在人體內的葯代動力學過程,提出新葯安全有效的給葯方案。對象:健康人。

⑵II期臨床試驗:為隨機盲法對照臨床試驗,由葯物臨床試驗機構進行臨床試驗。其目的是確定葯物的療效適應證,了解葯物的毒副反應,對該葯的有效性、安全性作出初步評價。對象:靶疾病的患者。

⑶Ⅲ期臨床試驗:是Ⅱ期臨床試驗的延續,目的是在較大范圍內進行新葯療效和安全性評價。要求在Ⅱ期臨床試驗的基 礎上除增加臨床試驗的病例數之外,還應擴大臨床試驗單位。多中心臨床試驗單位應在臨床葯理基地中選擇,一般不少於3個,每個中心病例數不少於20例。各項 要求與II期相似,但一般不要求雙盲醫學|教育網搜集整理。

⑷Ⅳ期臨床試驗:也稱上市后監察。其目的在於進一步考查新葯的安全有效性,即在新葯上市后,臨床廣泛使用的最初 階段,對新葯的療效、適應證、不良反應、治療方案可進一步擴大臨床試驗,以期對新葯的臨床應用價值做出進一步評價,進一步了解的療效、適應證與不良反應情 況,指導臨床合理用葯。包括擴大試試驗、特殊對象臨床試驗、補充臨床試驗。

舉一個例子,有七個病人,服用增加血壓的新葯3個月。他們血壓分別升高了1.5,  2.9,  0.9, 3.9,  3.2,  2.1,  1.9,預測95%置信度的總體患者血壓值的置信區間。

計算T分布需要用T-分數表

 

看T分布表有點麻煩,為了簡單和避免出錯,我已經用python代碼封裝好。

 

只需要輸入參數(樣本和置信度)樣本:[1.5,2.9,0.9,3.9,3.2,2.1,1.9],置信度:0.95

程序自動得到結果[1.3789786293305519, 3.3067356563837338] 

程序回答了上述問題,在95%置信度的條件下,總體患者血壓值的置信區間為1.3789786293305519和3.3067356563837338之間

 

環境:Anaconda(python2.7)

下面代碼經過測試,可以運行。

代碼屬於手動建模,scipy.stats.t.interval也可以准確計算T分布的置信區間,代碼量更少,但少了一份自己建模的樂趣。

# -*- coding: utf-8 -*-

'''

T分布建模

'''

import numpy as np  

from scipy.stats import chi2  

from scipy.stats import t  

from scipy.stats import f  

from scipy.stats import norm

import math

# t distribution

confidence=0.95

mean=240

s=25

n=10 

#通過輸入參數置信度,樣本數量,樣本平均數,樣本標准差四個參數,計算置信區間

def Confidence_interval(confidence,n,mean,s):

    a=(1-confidence)/2.0

    dfValue=n-1

    #t分數

    t_std=t.isf(a, df=dfValue)

    #標准誤

    standard_error=s/math.sqrt(n)

    #誤差范圍

    margin_error=t_std*standard_error

    #置信區間

    conf_int =[mean-margin_error,mean+margin_error]

    return conf_int

sample=[1.5,2.9,0.9,3.9,3.2,2.1,1.9]

def Confidence_interval2(sample,confidence):

    a=(1-confidence)/2.0

    #樣本數量

    n=len(sample)

    #平均數

    mean=np.mean(sample)

    s=np.std(sample,ddof=1)

    #自由度

    dfValue=n-1

    #t分數

    t_std=t.isf(a, df=dfValue)

    #標准誤

    standard_error=s/math.sqrt(n)

    #誤差范圍

    margin_error=t_std*standard_error

    #置信區間

    conf_int =[mean-margin_error,mean+margin_error]

    return conf_int

confidence_interval=Confidence_interval2(sample,confidence)  

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM