1. 程式人生 > >R-基本統計分析--獨立、相關性及其檢驗

R-基本統計分析--獨立、相關性及其檢驗

獨立性檢驗-(卡方、Fisher)

獨立性檢驗_百度百科 https://baike.baidu.com/item/%E7%8B%AC%E7%AB%8B%E6%80%A7%E6%A3%80%E9%AA%8C/4031921?fr=aladdin R之獨立性檢驗 - 王文強的部落格 - CSDN部落格 https://blog.csdn.net/u012429555/article/details/78902852  

研究兩種方式之間是否獨立,或是否有關聯性可採用獨立性檢驗、

本例中:探究治療方式對提升效果是否有顯著性影響可用獨立性檢驗。

chisq.test()卡方獨立性檢驗
fisher.test()費雪兒獨立性檢驗
library(grid)
library(vcd)
mytable<-xtabs(~Treatment+Improved,data = Arthritis)
chisq.test(mytable)
fisher.test(mytable)
> chisq.test(mytable)
 
   Pearson's Chi-squared test
 
data:  mytable
X-squared = 13.055, df = 2, p-value = 0.001463
  • 零假設是:兩組實驗結果無顯著差異,結果是由誤差引起的。
  • 備擇假設:兩組結果顯著差異。p值越小,表示越拒絕零假設。
  • 其根本思想就是在於比較理論頻數和實際頻數的吻合程度或擬合優度問題。
  • 採用chisq.test()對二維錶行與列變數進行獨立性檢驗,一般來說只需要看P值即可,其含義為:“從總體中抽取的樣本行變數與列變數是相互獨立的概率”;p值越小表明獨立的概率越低。
  • 因此在治療方案與提升效果p(獨立概率)值為0.001463,表明接受原假設,兩者不存在某種關係。
  • p值越大,拒絕原假設獨立的可能性越大,p值越小,接收原假設獨立的可能性越小。
  • p值得具體限定可以去0.01或0.05根據需要而定。
  > fisher.test(mytable)      Fisher's Exact Test for Count Data   data:  mytable p-value = 0.001393 alternative hypothesis: two.sided  
  • 採用Fisher.test()對二維表進行獨立性檢驗,同上。
  • 治療方案與提升效果p(獨立概率)值為0.001393,表明接受原假設,兩者不存在某種關係.
mytable<-xtabs(~Improved+Sex,data = Arthritis)
mytable
chisq.test(mytable)
fisher.test(mytable)
> chisq.test(mytable)      Pearson's Chi-squared test   data:  mytable X-squared = 4.8407, df = 2, p-value = 0.08889   Warning message: In chisq.test(mytable) : Chi-squared近似演算法有可能不準   提升效果與性別的p(獨立概率)值為0.08889,表明拒絕原假設,兩者存在某種關係.   > fisher.test(mytable)      Fisher's Exact Test for Count Data   data:  mytable p-value = 0.1094 alternative hypothesis: two.sided   提升效果與性別的p(獨立概率)值為0.1094,表明拒絕原假設,兩者存在某種關係.    

相關係數、協方差


如何通俗易懂地解釋「協方差」與「相關係數」的概念?(轉)_至臻思想_新浪部落格 http://blog.sina.com.cn/s/blog_6aa3b1010102xkp5.html 協方差 可以通俗的理解為:兩個變數在變化過程中是同方向變化?還是反方向變化?同向或反向程度如何? 你變大,同時我也變大,說明兩個變數是同向變化的,這時協方差就是正的。 你變大,同時我變小,說明兩個變數是反向變化的,這時協方差就是負的。 從數值來看,協方差的數值越大,兩個變數同向程度也就越大。反之亦然。 協方差描述了兩者的變動幅度和相關程度、 而相關係數是去除了變動幅度的影響後的變動相關程度。
> states

              Population Income Illiteracy Life Exp Murder HS Grad

Alabama              3615   3624        2.1    69.05   15.1    41.3 Alaska                365   6315        1.5    69.31   11.3    66.7 Arizona              2212   4530        1.8    70.55    7.8    58.1 Arkansas             2110   3378        1.9    70.66   10.1    39.9 California          21198   5114        1.1    71.71   10.3    62.6 Colorado             2541   4884        0.7    72.06    6.8    63.9  
> cov(states)
             Population   Income     Illiteracy     Life Exp   Murder Population 19931683.7588 571229.7796  292.8679592 -407.8424612 5663.523714 Income       571229.7796 377573.3061 -163.7020408  280.6631837 -521.894286 Illiteracy      292.8680   -163.7020    0.3715306   -0.4815122    1.581776 Life Exp       -407.8425    280.6632   -0.4815122    1.8020204   -3.869480 Murder         5663.5237   -521.8943    1.5817755   -3.8694804   13.627465 HS Grad       -3551.5096   3076.7690   -3.2354694    6.3126849  -14.549616   人口和收入的值都很大,並且他們的變動方向和變動同向程度也非常類似,因此兩者的協方差值就非常大,且為正值。(571229.7796) 謀殺率和文盲的值都非常小,並且他們也基本同向變動,因此他們的協方差也非常小,且為正值、(1.5817755)  
> cor(states)
           Population  Income    Illiteracy  Life Exp    Murder Population  1.00000000  0.2082276  0.1076224 -0.06805195  0.3436428 Income      0.20822756  1.0000000 -0.4370752  0.34025534 -0.2300776 Illiteracy  0.10762237 -0.4370752  1.0000000 -0.58847793  0.7029752 Life Exp   -0.06805195  0.3402553 -0.5884779  1.00000000 -0.7808458 Murder      0.34364275 -0.2300776  0.7029752 -0.78084575  1.0000000   相關係數是去除了變動幅度之後的兩個值的同向程度,因此哪怕另一個值數值非常大,但是兩者的變動程度基本一致,那麼其相關係數依然很大,且接近1. 人口與收入的值非常大,放入去除量綱影響的相關係數計算中,就會顯現出變動程度的原型,表明兩者之間變動較為相似,且正相關。(0.2088876) 謀殺和文盲的值都非常小,他們同向變動非常類似,因此相關係數接近1且為正值。(0.7029752)    

相關性檢驗


cor、cov引數描述

  • x:矩陣或資料框
  • use:指定缺失資料的處理方式。可選的方式為:
    • all.obs(假設不存在缺失資料——遇到缺失資料時將報錯)、
    • everything(遇到缺失資料時,相關係數的計算結果將被設為 missing)、
    • complete.obs(行刪除)以及
    • pairwise.complete.obs(成對刪除,pairwise deletion)
  • method:指定相關係數的型別。
    • 可選型別為 pearson、spearman 或 kendall

Spearman(斯皮爾曼相關係數)

SPSS詳細教程:Spearman相關分析_網易訂閱 http://dy.163.com/v2/article/detail/D50KIR550514AGEL.html  

問題提出:研究者想判斷兩個連續變數之間的關係。(即分析膽固醇濃度與看電視時間的關係。)

1.spearman假設分析:針對這種情況,我們可以使用Spearman相關分析,但需要先滿足2項假設:

                            假設1:觀測變數是連續變數或有序分類變數    (如本研究中膽固醇濃度與看電視時間都是連續變數)                             假設2:變數之間存在單調關係                     (且異常值對該相關係數影響較小) 2.假設情況分析:本資料為膽固醇濃度與看電視時間都是連續變數,符合假設1、                             膽固醇濃度與看電視時間是否單調可以作散點圖來判斷。 3.假設條件成立,進行spearman相關分析並進行顯著性檢驗。 4.得到結論。(具體流程可見連結詳細操作)
 

pearson(皮爾遜相關係數)

統計學之三大相關性係數(pearson、spearman、kendall)_閔慶傑_新浪部落格 http://blog.sina.com.cn/s/blog_69e75efd0102wmd2.html

問題提出:研究者想判斷兩個正態分佈變數之間的關係。(即分析蛋白質A與蛋白質B的變化關係。)

1.pearson假設分析:針對這種情況,我們可以使用Spearman相關分析,但需要先滿足2項假設:

        假設1: 實驗資料通常假設是成對的來自於正態分佈的總體。    (如本研究中膽固醇濃度與看電視時間都是連續變數)         假設2: 實驗資料之間的差距不能太大。                              (或者說皮爾森相關性係數受異常值的影響比較大)  2.假設情況分析:本資料為蛋白質A與蛋白質B的變化關係且基本是正態分佈,符合假設1、                              蛋白質A與蛋白質B之間的資料較為集中,沒有出現過大的異常值影響。 3.假設條件成立,進行perason相關分析並進行顯著性檢驗。 4.得到結論。
 例項介紹:
X1=c(1, 2, 3, 4, 5, 6)          #資料來自正態總體,且無異常值
Y1=c(0.3, 0.9, 2.7, 2, 3.5, 5)  
cor(X1,Y1,method = "pearson")
[1] 0.9481367
X2<-c(1,1,1,1,1,1)              #資料來自非正態總體
Y1=c(0.3, 0.9, 2.7, 2, 3.5, 5)
cor(X2,Y1,method = "pearson")
[1] NA Warning message: In cor(X2, Y1, method = "pearson") : 標準差為零
X2<-c(1,1,1,1,1,0)             #資料來自非常態總體糾正,異常值對person相關係數> spearman相關係數 的影響。
Y1=c(0.3, 0.9, 2.7, 2, 3.5, 5)
cor(X2,Y1,method = "pearson")
cor(X2,Y1,method = "spearman")
[1] -0.7383504 [2] -0.6546537  

kendall correlation coefficient(肯德爾相關性係數)

問題提出:研究者想判斷分類(類別)變數之間的關係。( 評委對選手的評分(優、中、差等),我們想看兩個(或者多個)評委對幾位選手的評價標準是否一致;)

1.kendall correlation coefficient假設分析:針對這種情況,我們可以使用kendall相關分析,但需要先滿足2項假設:

  假設1: 無序的,比如性別(男、女)、血型(A、B、O、AB);  or假設2: 有序的,比如肥胖等級(重度肥胖,中度肥胖、輕度肥胖、不肥胖; 2.假設情況分析:本資料為評委對選手的評分(優、中、差等),符合其中的假設2。 3.假設條件成立,進行Kendall相關分析並進行顯著性檢驗。 4..得到結論。
 例項介紹:
x1<-c(3,2,3,1,3,1)
x2<-c(3,2,2,1,2,2)
cor(x1,x2,method = "kendall")
[1] 0.6030227 表明兩位評委打分情況相關程度為0.603.  例項拓展: 自定義特定列之間的相關係數
> x<-states[,c('Population','Income','Illiteracy','HS Grad')]
> y<-states[,c('Life Exp','Murder')]
> cor(x,y)

              Life Exp     Murder

Population -0.06805195  0.3436428 Income      0.34025534 -0.2300776 Illiteracy -0.58847793  0.7029752 HS Grad     0.58221620 -0.4879710          

偏相關


指控制一個或多個變數時,另外兩個變數之間的相互關係。 pcor Computes the partial correlation between two variables given a set of other variables. 計算給定一組其他變數的兩個變數之間的部分相關性。 pcor(u, S)
library(ggm)
kzv<-c(1,5)      #控制變數population、murder
pcv<-c(2,3,6)    #排除影響變數income、illiteracy、HS Grad
u<-c(kzv,pcv)    #組合給定預設U值
s<-cov(states)   #計算整體協方差
pcor(u,s)        #計算偏相關
[1] 0.3462724  
pcor(c(1,5,2,3,6),cov(states))
[1] 0.3462724   控制income、illiteracy,HS Grad三個變數,研究population與murder之間的關係,發現人口與謀殺率之間的相關係數為0.3462724.       .........................部分原始資料............................. > states                Population Income Illiteracy Life Exp Murder HS Grad Alabama              3615   3624        2.1    69.05   15.1    41.3 Alaska                365   6315        1.5    69.31   11.3    66.7 Arizona              2212   4530        1.8    70.55    7.8    58.1 > colnames(states)   #資料框列名稱 [1] "Population" "Income"     "Illiteracy" "Life Exp"   "Murder"     "HS Grad"    

相關係數的檢驗


cor.test(x,  y,  alternative=,  method =)

x,y:表示要檢驗的相關變數

alterlative:指定單雙側檢驗(“two.side”,“less”,“greater”)

method:指定計算的相關係數型別(“person”,“Kendall”,“spearman”)

> X1=c(1, 2, 3, 4, 5, 6)          #資料來自正態總體,且無異常值
> Y1=c(0.3, 0.9, 2.7, 2, 3.5, 5)  
> cor(X1,Y1,method = "pearson")
[1] 0.9481367                     #cor計算person相關係數
> cor.test(X1,Y1,method = 'pearson')
    Pearson's product-moment correlation   data:  X1 and Y1 t = 5.9657, df = 4, p-value = 0.003965 alternative hypothesis: true correlation is not equal to 0 95 percent confidence interval: 0.5924434 0.9944768 sample estimates:       cor 0.9481367              #cor.test計算person相關係數的顯著性(0.003965)表示該相關係數非常可信。  
> library(psych)           #psych包裡的升級版corr.test進行相關計算與檢驗
> corr.test(states,use = 'complete',method = 'pearson',alpha = 0.05)
Call:corr.test(x = states, use = "complete", method = "pearson",     alpha = 0.05) Correlation matrix            Population Income Illiteracy Life Exp Murder HS Grad Population       1.00   0.21       0.11    -0.07   0.34   -0.10 Income           0.21   1.00      -0.44     0.34  -0.23    0.62 Illiteracy       0.11  -0.44       1.00    -0.59   0.70   -0.66 Life Exp        -0.07   0.34      -0.59     1.00  -0.78    0.58 Murder           0.34  -0.23       0.70    -0.78   1.00   -0.49 HS Grad         -0.10   0.62      -0.66     0.58  -0.49    1.00 Sample Size [1] 50 Probability values (Entries above the diagonal are adjusted for multiple tests.)            Population Income Illiteracy Life Exp Murder HS Grad Population       0.00   0.59       1.00      1.0   0.10       1 Income           0.15   0.00       0.01      0.1   0.54       0 Illiteracy       0.46   0.00       0.00      0.0   0.00       0 Life Exp         0.64   0.02       0.00      0.0   0.00       0 Murder           0.01   0.11       0.00      0.0   0.00       0 HS Grad          0.50   0.00       0.00      0.0   0.00       0   To see confidence intervals of the correlations, print with the short=FALSE option corr.test()引數: function (x, y = NULL, use = "pairwise", method = "pearson",     adjust = "holm", alpha = 0.05, ci = TRUE)  

優勢描述:cor只有相關性輸出,cor.test也只有概率值輸出,且都值只針對一對變數。而

psych包的corr.test則是R標準包cor和cor.test的升級版,可以計算矩陣相關性的同時,計算概率值,極其方便進行判斷選擇。

x:計算矩陣

y:與x相同行數的第二矩陣或資料檔案

use:pairwise(預設)表示成對刪除無效變數,complete表示行刪除無效變數。

method:pearson、spearman、Kendall

alpha:置信水平(0.05)