在閱讀肺癌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, score 和 ml. 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就得到了,前路漫漫,依然有好多不懂的,持續學習!