相關係數z檢驗(從R語言到matlab轉換)

2021-06-19 19:33:13 字數 1189 閱讀 7265

原來做配對或是雙樣本t檢驗的時候,都是用的matlab裡面自帶的ttest、ttest2來解決,但是遇到一些文獻裡面,有z檢驗是在r語言環境下編寫的,但是如何在matlab 中用z檢驗呢?

fisher z-transform是對資料近似的變異穩定化處理,z變換後近似服從均值為

z變換有好幾種:

如果是相關係數,用fisher z變換。

如果是t值,用spm_t2z(可以搜尋spm8軟體包)

如果是其他值比如量表得分,用減均值除方差方式近似得到z值

(內容感謝zang yf的回答:

這邊我只寫fisher z變換公式,針對相關係數作闡述,具體可以查閱wiki:

z = 0.5* ln( (1+r)/(1-r) ) 

對於r語言環境中:

diff.corr 

diff.corr( r1=0.5, n1=100, r2=0.40, n2=80 )

## two-tailed p-value 0.4103526

diff.corr( r1=0.1, n1=100, r2=-0.1, n2=80 )

## two-tailed p-value 0.1885966

(內容參考 

其中r1 r2是兩個樣本的均值,n1 n2是樣本數。

而如是在matlab中如何z檢驗呢?

function [zvalue,pvalue] = zr(r1,n1,r2,n2)

z1 = 0.5*log((1+r1)/(1-r1));

z2 = 0.5*log((1+r2)/(1-r2));

ddiff = z1-z2;

seddiff = sqrt(1/(n1-3)+1/(n2-3));

zvalue = ddiff/seddiff;

pvalue = 2 *(1- normcdf(abs(zvalue)));

end

輸出的duffz ff分別是z值和概率,normcdf是累計正態分佈函式,若是要單尾的話,

pvalue = 2*(1- normcdf(abs(zvalue),0,1));
normcdf不用乘以2,若是2013b版本的matlab可以用upper來代替1減

這個**是z變換**,資料量少的話或不怕麻煩可以進入這個**。

相關係數的檢驗

氣象家園 相關係數的檢驗主要有兩種方法,一種是對假設 相關係數 0 的t檢驗,另一種是對假設 相關係數 0 的z檢驗。關於t檢驗 檢驗r是否顯著,即檢驗r是否不等於零 1 根據r和n計算得到t 2 查表得到 在 顯著性水平 和自由度 n 2 下,t分布的上 分位點t 2 3 判斷t t 2是否成立,...

皮爾遜相關係數和檢驗P值

看兩者是否算相關要看兩方面 顯著水平以及相關係數 1 顯著水平,就是p值,這是首要的,因為如果不顯著,相關係數再高也沒用,可能只是因為偶然因素引起的,那麼多少才算顯著,一般p值小於0.05就是顯著了 如果小於0.01就更顯著 例如p值 0.001,就是很高的顯著水平了,只要顯著,就可以下結論說 拒絕...

R中方差,協方差,相關係數

提到方差,乙個命令var 方差定義用來度量隨機變數和其數學期望 即均值 之間的偏離程度。a sample 10 a 1 4 2 9 3 6 10 8 5 7 1 var a 1 9.166667是協方差。協方差定義用於衡量兩個變數的總體誤差,即描述兩個變數之間的相對於各自的期望值的變化趨勢。方差是協...