日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

t检验怎么分析结果python_使用python 批量 配对t检验 医学 基础研究 数据分析

發(fā)布時間:2023/12/16 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 t检验怎么分析结果python_使用python 批量 配对t检验 医学 基础研究 数据分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

需要excel數(shù)據(jù)源文件的請去http://download.csdn.net/download/camelbrand/10216783下載,只保留少數(shù)列的數(shù)據(jù),剩余的2000多個數(shù)據(jù)已經(jīng)被我刪除了。

幫學醫(yī)的同學弄完一個python數(shù)據(jù)處理的程序,怕以后忘記了,記錄下來

t檢驗是計量資料的假設檢驗中最為簡單常用的,當樣本含量n較小時,比如n小于60。配對t檢驗又稱成對t檢驗,適用于配對設計的計量資料。配對設計是將受試對象按照某些重要特征,如可疑混雜因素性別等配成對子,每對中的兩個受試對象隨機分配到兩處理組。

要計算的部分數(shù)據(jù)如下,從列LINC01587開始,一共有2027列數(shù)據(jù):

其中Solid Tissue Normal和Primary Tumor是一對,如第2行和第3行是一對,第4行和第5行是一對,以此類推。需要完成的工作是從LINC01587開始,計算該列的數(shù)據(jù)的差異有無統(tǒng)計學意義。通常使用的spss工具來計算,安裝IBM SPSS Statics之后,先來個demo學習計算LINC01587演示下。

1.啟動IBM SPSS Statics,選擇輸入數(shù)據(jù),點擊確定

2.彈出界面中,新建變量視圖,如下圖所示填入?yún)?shù)Solid代表Solid Tissue Normal

Primary代表Primary Tumor,然后點擊數(shù)據(jù)視圖

按照上面的表格數(shù)據(jù),將列LINC01587以此填入,如下圖所示,其中0E-13表示為0

3.點擊分析,選擇比較均值,然后選擇配對樣本T檢驗

彈出界面中,按下鍵盤上的Ctrl鍵,然后依次選中左邊紅色框內(nèi)的Solid和Primary,然后點擊右邊紅框內(nèi)的的箭頭

如上圖所示,點擊確定,SPSS輸出計算結果如下,其中右下角紅色框內(nèi)的是我們需要的結果。

上圖計算得到的p值是0.188。

第一個表格是數(shù)據(jù)的基本描述。

第二個是數(shù)據(jù)前后變化的相關系數(shù),那個概率P值是相關系數(shù)的概率值,概率大于顯著性水平0.05,則說明數(shù)據(jù)變化前后沒有顯著的線性變化,線性相關程度較弱。

第三個表格是數(shù)據(jù)相減后與0的比較,通過概率值為0,小于顯著性水平0.05,則拒絕原假設,相減的差值與0有較大差別,則表明數(shù)據(jù)變化前后有顯著的變化。

但是數(shù)據(jù)源有2027列數(shù)據(jù)都需要計算,工作量巨大,可以考慮使用python來完成這部分工作。

那么我們設計python程序需要完成的工作包括:

1.打開excel數(shù)據(jù)文件,并讀取文件數(shù)據(jù)

2.依次對所有列數(shù)據(jù)進行計算,并輸出p值計算結果。

地址為http://blog.csdn.net/hjh00/article/details/48530183的博客,最后一部分內(nèi)容給出了如何使用python完成配對t檢驗的程序

使用python開發(fā)程序,首先需要安裝python,本人的電腦上已經(jīng)安裝了python的開發(fā)環(huán)境,具體配置參考python教程(按照這個教程一步一步來學習入門)https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

配置好python之后,在windows CMD命令行輸入python,顯示我的python版本號是 Python 3.6.1

上面博客給出的配對t檢驗計算程序如下圖,但是安裝好python之后,可能電腦上并沒有scipy.stats,為了安裝scipy(后面部門的excel處理功能可能也沒有安裝),可以參考網(wǎng)址:

https://www.cnblogs.com/babyfei/p/7080047.html?utm_source=itdadao&utm_medium=referral

安裝好python開發(fā)環(huán)境之后,要完成上面SPSS計算的工作,我們只需要列出下,加了#號的都是注釋,不會執(zhí)行,我的程序只是把列表變量a和b替換成列LINC01587的數(shù)據(jù),其中a是Solid Tissue Normal,b代表Primary Tumor

# http://blog.csdn.net/hjh00/article/details/48530183

from scipy.stats import ttest_rel

#a = [3,4,1,1,1,3,3,6,5,1,4,5,4,4,3,6,7,7,7,8]

#b = [7,6,7,8,7,6,5,6,4,2,5,4,3,6,7,5,4,3,8,7]

a = [0.1934107598010,0.0894060200161,0.0718704187628,0.3608183477340,0.0367125061353,0,0.1279727464080,0]

b= [0,0.0736396246482,0.0427039152731,0,0.0701365405069,0.0104761411961,0.1097963382500,0.0093947227584]

t,p=ttest_rel(a,b)

print (t )

print (p )

執(zhí)行上面的程序,分別打印t和p,紅色框內(nèi)的p值與上面SPSS計算的p值結果一致:

那么接下來的工作只需要設計使用python對excel文件進行處理的部分了,我的代碼如下(實際調試我使用了軟件Geany作為編輯器,可以很方便的編輯和運行python程序):

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

2 importxdrlib ,sys3 importxlrd4 from scipy.stats importttest_rel5

6 #打開excel文件

7 def open_excel(file= 'test.xlsx'):8 try:9 data =xlrd.open_workbook(file)10 returndata11 exceptException as e:12 print(str(e))13

14 #根據(jù)名稱獲取Excel表格中的數(shù)據(jù) 參數(shù):file:Excel文件路徑 colnameindex:表頭列名所在行的索引 ,by_name:Sheet1名稱

15 def excel_table_byname(file= 'test.xlsx', colnameindex=0, by_name=u'Sheet1'):16 data = open_excel(file) #打開excel文件

17 table = data.sheet_by_name(by_name) #根據(jù)sheet名字來獲取excel中的sheet

18 nrows = table.nrows #行數(shù)

19 nCol = table.ncols #列數(shù)

20 print("row count is",nrows)21 print("colume count is",nCol)22 colnames = table.row_values(colnameindex) #某一行數(shù)據(jù)

23 list =[] #裝讀取結果的序列

24 for rownum in range(0, nrows): #遍歷每一行的內(nèi)容

25 row = table.row_values(rownum) #根據(jù)行號獲取行

26 if row: #如果行存在

27 app = [] #一行的內(nèi)容

28 for i in range(len(colnames)): #一列列地讀取行的內(nèi)容

29 app.append(row[i])30 list.append(app) #裝載數(shù)據(jù)

31

32 returnlist33

34 defget_col(table,col,fstStr):35 listdata =[]36 #sprint(col,type(col))

37 for row intable:38 if(row[0]==fstStr):39 listdata.append(row[col])40 returnlistdata41

42 #主函數(shù)

43 defmain():44 tables =excel_table_byname()45 f = open("./excel.txt", 'w+')46 print("main function", file=f)47 print(type(tables), file=f)48 TotalCol =len(tables[0])49 #for row in tables:

50 #print (row)

51 p_result =[];52 for n in range(8,TotalCol):53 print("calculate",n, file=f)54 list1 = get_col(tables,n,"Solid Tissue Normal")55 list2 = get_col(tables,n,"Primary Tumor")56 t,p=ttest_rel(list1,list2)57 p_result.append(p)58 print("calc over", file=f)59 print(p_result, file=f)60 if __name__=="__main__":61 main()

針對其他格式不一致的表格,改程序未必生效,比較關鍵的參數(shù)是38行row[0]中的0,以及52行的數(shù)字8,都是根據(jù)excel表內(nèi)容自定義寫入的。

print(xxx,file=f)的結果會輸出到python程序文件所在目錄的excel.txt文本文檔中,輸出結果如下,最后一行就是從LINC01587列開始計算的p值,nan表示該列數(shù)據(jù)計算的p無效

main function

calculate 8

calculate 9

calculate 10

calculate 11

calculate 12

calculate 13

calc over

[0.18763370952460945, 0.6178834746354206, 0.45183198301444494, nan, nan, 0.3665736965096091]

后續(xù)還可以直接使用python將計算結果寫入excel表中,我這里只做到了通過txt文本打印輸出。如果有時間,可以繼續(xù)開發(fā)研究一下。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

my mail:shaw2321@163.com

總結

以上是生活随笔為你收集整理的t检验怎么分析结果python_使用python 批量 配对t检验 医学 基础研究 数据分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。