snptest學習筆記

在閱讀肺癌PRS分型那篇文章時發現作者使用這個軟件進行了多元邏輯迴歸,值得學習一下。在微信上能找到一篇教程來自陳文燕[bio生物信息]公衆號的對性染色體進行關聯分析(轉載在了下一篇文章裏),也可以學習下一些知識。

For the GWAS datasets, we calculated per-allele ORs and SEs using logistic regression analysis with the SNPTEST software (version 2.5.4) based on a probabilistic dosage model.

使用基於概率劑量模型的SNPTEST軟件(版本2.5.4)使用Logistic迴歸分析計算每個等位基因的ORs和Se.

根據這句話,嘗試做點學習,記錄點筆記。

Logit筆記

先補充學習了Logit的相關知識,手記筆記:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-4Pz7Jkny-1583310584622)(https://jiawen.zd200572.com/wp-content/uploads/2020/03/logit.jpg)]

Logistic迴歸適用於二值響應型變量(0和1),模型假設響應亦是Y服從二項分佈。通過一系列連續和/類別型 預測變量來預測二值型結果時使用。《R語言實戰》(一本初看沒有多少頭緒,慢慢纔有些感覺的書。最近還讀了《R語言輕鬆入門與提高/達人迷》覺得這本書淺顯易懂,雖然有點老,推薦閱讀。

軟件下載和準備

下載地址地這個網站 https://mathgen.stats.ox.ac.uk/genetics_software/snptest/snptest.html

#我是黑蘋果,下載的mac版,雖然兩天死機一次,仍在堅持用,因爲實在受不了bug10的咖喱風
 wget -c http://www.well.ox.ac.uk/~gav/resources/snptest_v2.5.4-beta3_MacOSX_x86_64.tgz
 #ubuntu,動態的比較推薦,適應更多平臺
 wget -c http://www.well.ox.ac.uk/~gav/resources/snptest_v2.5.4-beta3_linux_x86_64_dynamic.tgz
 #Cent
 wget -c http://www.well.ox.ac.uk/~gav/resources/snptest_v2.5.4-beta3_CentOS6.6_x86_64_dynamic.tgz
 ##解壓安裝
 tar zxvf snptest_v2.5.4-beta3_MacOSX_x86_64.tgz
 #測試
snptest_v2.5.4-beta3_MacOSX_x86_64/snptest_v2.5.4-beta3 -help
Welcome to SNPTEST v2.5.3 (revision 8a0c171055ff6ac4c69079501f52ac93c563ed20)
© University of Oxford 2008-2015
https://mathgen.stats.ox.ac.uk/genetics_software/snptest/snptest.html
Read LICENCE file for conditions of use.

Usage: snptest_v2.5.3 <options>
 #好多信息,此處省略n百字符

使用

1.先確定哪個選項完成這個功能

官網的文檔中,有幾個功能作了介紹,第一個Computing summary statistics,應該是彙總統計,主要功能介紹爲:計算每個基因型的計數,頻率,SNP缺失率和OR值。顯然不是這個功能,順便用搜索logistic 確認了下,沒有。第二個是Frequentist Association Tests,頻率關聯測試,沒找到相關內容。第三個,Bayesian Tests (Bayes Factors),貝葉斯測試,找到了相關內容。後面兩個選項也是有相關內容的,但是在這裏又看到了這句話的引文,來自2007年的一篇nature,A new multipoint method for genome-wide association studies by imputation of genotypes,發現這篇文章中涉及的兩個方法是 frequentist和bayesian,所以斷定應該是後者了。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-FbyGbUA3-1583310584668)(https://jiawen.zd200572.com/wp-content/uploads/2020/03/ref1.jpg)]

簡單看下這篇引文,會不會有什麼收穫,基本上是關於detect causal variants that have not been directly genotyped的,翻譯一下就是檢測尚未直接進行基因分型的因果變異。所推斷的基因型有時(適當地)是不確定的,所以我們發現有必要開發關聯性檢驗(包括頻度檢驗和貝葉斯檢驗),以考慮到我們推定的基因型的不確定性。貝葉斯因子在某種程度上類似於頻率P值,它們的使用開始出現在文獻中,作爲經典關聯檢驗的一種更強大和更容易解釋的選擇。

還是來自引文的內容:使用貝葉斯因子比頻率測試統計量或P值有幾個優點。正確解釋P值需要了解所用測試的威力。非正式地,小的P值可能在NULL下偶然出現或來自真正的關聯。在沒有對可能的效應大小的研究的威力瞭解的情況下,評估其中的哪一種可能是困難的(例如,對於動力不足的研究,我們預計最重要的P值會偶然出現)。貝葉斯因子的計算,就像冪計算一樣,需要關於效應大小的假設,但貝葉斯因子本身具有自然的解釋,作爲根據數據改變我們先前的關聯概率的因子。貝葉斯因子可以在給定的SNP下通過不同的關聯模型自然地組合。例如,我們可以跨加性模型、顯性模型、隱性模型和一般模型求貝葉斯因子的平均值,以避免必須指定在一個位點使用的單個模型。可以使用類似的思想來組合區域內跨SNP的貝葉斯因子。根據最近關於貝葉斯方法獲得的能力的證據,我們重點研究了基於貝葉斯因子的測試統計,並在使用的兩組測試統計中對方法進行了比較,以便將結果集中在每種方法預測因果變量的能力上,而不是集中在不同測試統計數據的能力差異上。我們分別使用非共軛和共軛先驗(補充方法)對2型糖尿病數據集和模擬數據集進行分析,以反映我們對適合這些數據集的遺傳效應大小的信念。

然後,這裏有帶了個參考文獻,順藤摸瓜,找到了,一個大牛的教程,但是是nature!!! 厲害吧。簡單掃了一眼,好像看不懂,這充分告訴我們,學好數學是多麼地重要,迴歸今天的主題吧!

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-drCWZk3P-1583310584671)(https://jiawen.zd200572.com/wp-content/uploads/2020/03/tutor.jpg)]

2.用示例數據學習下Bayesian Tests (Bayes Factors)

-bayesian選項,此選項控制您希望在每個SNP上測試與模型沒有關聯的SNP。 這五個不同的模型被編碼爲1 =Additive,2 =顯性,3 =隱性,4 =常規和5 =雜合子。 使用此選項時,輸出文件將爲每個測試包含一列,其中包含該測試的log10貝葉斯因子以及模型參數(β值)及其標準誤差的後驗均值。 SNPTEST將allele_A編碼爲0,將allele_B編碼爲1,這定義了beta的含義以及se的含義。 例如,當使用加性模型時,β估計對數機率的增加,這可以歸因於allele_B的每個副本。 貝葉斯因子將始終以每個SNP計算。

-method選項還用於控制貝葉斯模型擬合的方式,但並非所有選項都有效。

  • 如果表型是二進制,那麼有效的選項只有 threshold, expected, scoreml. score選項使用單個牛頓-拉夫森迭代來估計後驗模式,而ml選項使用多次迭代。
  • 如果是數量表型,那麼有效的選項只有threshold和expected
貝葉斯模型的先驗

下表說明了所使用的Logistic迴歸的線性預測值、模型參數使用的先驗的形式、SNPTEST中使用的默認先驗以及可用於更改先驗的命令行選項。

Model Linear Predictor Priors Default Coding Command line option
Additive log(pi/(1-pi)) = µ + ßGi µ~N(a0, a12) ß~N(b0, b12) a0=0, a1=1 b0=0, b1=0.2 Gi is the additive coding of the SNP i.e. AA -> 0, AB ->1, BB -> 2. -prior_add a0 a1 b0 b1
Dominant log(pi/(1-pi)) = µ + ßDi µ~N(a0, a12) ß~N(b0, b12) a0=0, a1=1 b0=0, b1=0.5 Di is the dominant coding of the SNP i.e. AA -> 0, AB -> 1, BB -> 1. -prior_dom a0 a1 b0 b1
Recessive log(pi/(1-pi)) = µ + ßRi µ~N(a0, a12) ß~N(b0, b12) a0=0, a1=1 b0=0, b1=0.5 Ri is the recessive coding of the SNP i.e. AA -> 0, AB -> 0, BB -> 1. -prior_rec a0 a1 b0 b1
General log(pi/(1-pi)) = µ + ßGi + qHi µ~N(a0, a12) ß~N(b0, b12) q~N(c0, c12) a0=0, a1=1 b0=0, b1=0.2 c0=0, c1=0.5 Gi is the additive coding of the SNP i.e. AA -> 0, AB ->1, BB -> 2. Hi is the heterozygote coding of the SNP i.e. AA -> 0, AB ->1, BB -> 0. -prior_gen a0 a1 b0 b1 c0 c1
Heterozygote log(pi/(1-pi)) = µ + ßHi µ~N(a0, a12) ß~N(b0, b12) a0=0, a1=1 b0=0, b1=0.5 Hi is the heterozygote coding of the SNP i.e. AA -> 0, AB ->1, BB -> 0. -prior_het a0 a1 b0 b1
T分佈先驗

在SNPTEST v2中,有一個新的選項來指定在遺傳效應上使用t分佈先驗。t分佈的較粗尾部允許更靈活地指定關於遺傳效應大小的信念。此選項由以下兩個選項控制。

-t_prior 詳細說明了t-分佈先驗在遺傳效應上的應用。該選項有效地修改了上表中描述的先驗,即t-分佈的均值和方差由上表中給出的選項指定,但是正態分佈被t-分佈代替。注:t分佈僅用於遺傳效應,即上述模型中的參數?和q。例如,-Bayesian add-t_previous將指定線性預測器log(pi/(1-pi))=µ+?Gi,並且先驗將是µ~N(a0,a12)和?t(b0,b12,df=3)。
**-t_df ** t分佈的自由度參數。默認值爲3。當此參數設置得非常大時,先驗收斂到正態分佈先驗。
例子-Bayesian病例-對照test

使用Bayesian addictive 模型對二值型表型bin1計算,使用默認參數

snptest_v2.5.4-beta3_MacOSX_x86_64/snptest_v2.5.4-beta3  \
-data snptest_v2.5.4-beta3_MacOSX_x86_64//example/cohort1.gen snptest_v2.5.4-beta3_MacOSX_x86_64//example/cohort1.sample snptest_v2.5.4-beta3_MacOSX_x86_64//example/cohort2.gen snptest_v2.5.4-beta3_MacOSX_x86_64//example/cohort2.sample \
-o snptest_v2.5.4-beta3_MacOSX_x86_64//example/ex.out \
-bayesian 1 \
-method score \
-pheno bin1
#輸出了一些信息
#這裏顯示2.5.3版本了
Welcome to SNPTEST v2.5.3 (revision 8a0c171055ff6ac4c69079501f52ac93c563ed20)
© University of Oxford 2008-2015
https://mathgen.stats.ox.ac.uk/genetics_software/snptest/snptest.html
Read LICENCE file for conditions of use.

==============

Data Files :
 -gen files : snptest_v2.5.4-beta3_MacOSX_x86_64//example/cohort1.gen snptest_v2.5.4-beta3_MacOSX_x86_64//example/cohort2.gen
 -sample files : snptest_v2.5.4-beta3_MacOSX_x86_64//example/cohort1.sample snptest_v2.5.4-beta3_MacOSX_x86_64//example/cohort2.sample

Tests :
 -bayesian : 1
 -method score

Inspecting data (this may take some time)...
Sample and exclusions summary :#樣本量500-500
 - Number of individuals in : (cohort 1)   (cohort 2)
                              500          500


Reading sample files :
Summary of covariates and phenotypes
 # discrete variables : 4 離散變量
  cov1 : type = D (Discrete covariate)
  cov2 : type = D (Discrete covariate)
  sex : type = D (Discrete covariate)
  bin3 : type = D (Discrete covariate)
 # continuous variables : 2 連續變量
  cov3 : type = C (Continuous covariate)
  cov4 : type = C (Continuous covariate)
 # phenotypes : 4 表型
  pheno1 : type = P (Continuous phenotype)
  pheno2 : type = P (Continuous phenotype)
  bin1 : type = B (Binary phenotype)
  bin2 : type = B (Binary phenotype)
Covariate summary :
  (no covariates in use.)
Phenotype summary :
  bin1    : missing  levels
            2        0(499) 1(499)

You have specified the following model: 模型
  bin1 ~ (baseline) + (genotype)

Phenotype being used : bin1

Data Summaries :
 -number of SNPs = (unknown)

Data with missing genotype data threshold and exclusion list applied :
 snptest_v2.5.4-beta3_MacOSX_x86_64//example/cohort1.gen : 500
 snptest_v2.5.4-beta3_MacOSX_x86_64//example/cohort2.gen : 500

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

SinglePhenotypeTest #檢驗
--------------------------------------------------------------------------

Analyzing Data :
 scanning... read chunk [1 of (unknown)]... done.
 scanning... read chunk [2 of (unknown)]... done.
 scanning... no more data.

finito

來看看結果文件,都有什麼內容:

less snptest_v2.5.4-beta3_MacOSX_x86_64/example/ex.out
#有點不好分清列,還是用excel,數據-分列-字符-空格

看看錶頭,好多信息,分了n行才列出來,第一行分別是染色體號,位置,等位基因,最大分型率

chromosome position alleleA alleleB index average_maximum_posterior_call info cohort_1_AA
INSERTION_1 RSID_1 NA 0 A AGTGCTA 1 0.992234

第二行是兩個隊列的相關信息。

cohort_1_AB cohort_1_BB cohort_1_NULL cohort_2_AA cohort_2_AB cohort_2_BB cohort_2_NULL
0.970846 0 0 0 499 176.815 250.974

第三行是總體基因型彙總信息

all_AA all_AB all_BB all_NULL all_total cases_AA cases_AB cases_BB
71.2104 0 176.815 250.974 71.2104 499 998 0

第四行是樣本對照統計信息

cases_NULL cases_total controls_AA controls_AB controls_BB controls_NULL controls_total
0 499 499 176.815 250.974 71.2104 0

第五行是接着上面的,還有數據缺失情況和OR值信息。

all_maf cases_maf controls_maf missing_data_proportion het_OR het_OR_lower
499 0.394184 0 0.394184 0.25 NA

第六行還是上一行的OR值信息

het_OR_upper hom_OR hom_OR_lower hom_OR_upper all_OR all_OR_lower
NA NA NA NA NA NA

第七行是本次分析得到的目標參數,log10(bf)貝葉斯因子?,beta值,標準差。

all_OR_upper bayesian_add_log10_bf bayesian_add_beta_1 bayesian_add_se_1 comment
NA -0.0174105 2.02E-17 0.192135 NA

大概到這裏,這句話要獲得的信息OR值和se就得到了,前路漫漫,依然有好多不懂的,持續學習!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章