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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

理解和实现置换检验

發(fā)布時間:2024/3/13 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 理解和实现置换检验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先說什么是置換檢驗?
總體意思就是:對于兩個樣本,先計算兩個樣本的原始均值差,然后進行放回性的抽取樣本操作,每一次抽取的時候,都計算兩個組的均值差,這樣有多少次抽樣就有多少個均值差,然后看看有多少個均值差在實際均值差之上,也就是得到實際均值差在這里的位置,根據位置就得到了P值。因為多個均值差的排列接近正態(tài)分布。
適用范圍:對于小樣本試驗,用T檢驗或者wilcox檢驗都有誤差,不太準確,因而使用置換檢驗比較恰當。這里的小樣本一般統計學情況下是指的10個,就是小于等于10個的樣本建議使用置換檢驗而不是t檢驗。
當然,在核磁領域,一般都是用置換檢驗會更好一點。
介紹coin包:

  • Exact Wilcoxon-Mann-Whitney test(wilcox檢驗):(wt <- wilcox_test(pd ~ age, data = diffusion, distribution = “exact”, conf.int = TRUE))
  • 查看上述的檢驗值:statistic(wt, type = “l(fā)inear”)
  • expectation(wt);covariance(wt);pvalue(wt);confint(wt)。查看一些p值,置信區(qū)間
  • kruskal_test(pd ~ age, data = diffusion, distribution = “exact”)
  • Asymptotic Fisher-Pitman test(漸進的permutation test): oneway_test(pd ~ age, data = diffusion)
  • Approximative (Monte Carlo) Fisher-Pitman test(蒙特卡洛法的近似置換檢驗):pvalue(oneway_test(pd ~ age, data = diffusion, distribution = approximate(nresample = 10000)))
  • Exact Fisher-Pitman test(精確的置換檢驗):pvalue(ot <- oneway_test(pd ~ age, data = diffusion, distribution = “exact”))
  • Exact Brown-Mood median test with different mid-scores(不同中位數的精確布朗情緒中位數測試):mt1 <- median_test(y ~ x, data = ex, distribution = “exact”)
  • Approximative (Monte Carlo) Kruskal-Wallis test(蒙特卡洛法的近似Kruskal-Wallis檢驗):kruskal_test(length ~ site, data = yoy, distribution = approximate(nresample = 10000))
  • 舉例:

    1 10:10

    A = 20,34,67,53,12,13,55,89,73, 62
    B = 23,45,12,56,23,67,22,66,65,41

    student t 檢驗結果, 0.596

    wilcox的結果 p=0.7334

    精確的置換檢驗的結果 0.5987

    模特卡洛模擬的置換檢驗結果 0.5942

    可以看出,置換檢驗其實很有用,能比較多的降低p值,其結果接近甚至比t檢驗更小。
    可能有的人會說,你這精確的置換檢驗比t檢驗還大。但是要明白,這是10個值的sample,這里的t是student t,它有比較嚴格的假設前提,但是一般實際情況下,你是沒辦法用student t的,因為范圍不符合,只能用wilcox,這樣p值就比較大了。而置換檢驗不要求假設前提,不要求數據分布,并且它計算出來的p都非常小,所以置換檢驗很有用,值得學習。
    而精確的置換檢驗和蒙特卡洛模擬的置換檢驗差了一點點,很正常,因為蒙特卡洛模擬具有隨機性。

    本來想附上python的代碼,但是發(fā)現python沒有現成的permutation test包,這就很尷尬了,在統計方面還是R強。但其實自己寫代碼實現permutation test也很簡單,就是把A和B合并成一個序列,從中放回的隨機抽A個樣本,計算A的均值和剩下樣本的均值,然后計算均值差,重復10000次,再計算實際A和B的統計量差在這個的位置,就得到了p值。
    附上網上別人的代碼。

    import numpy as np import matplotlib.pyplot as plt import seaborn as sns def exact_mc_perm_test(xs, ys, nmc):n, k = len(xs), 0diff = np.abs(np.mean(xs) - np.mean(ys))zs = np.concatenate([xs, ys])list=np.empty(nmc)for j in range(999):np.random.shuffle(zs)list[j]=np.abs(np.mean(zs[:n]) - np.mean(zs[n:]))k += diff < np.abs(np.mean(zs[:n]) - np.mean(zs[n:]))return list xs = np.array([24,43,58,67,61,44,67,49,59,52,62,50]) ys = np.array([42,43,65,26,33,41,19,54,42,20,17,60,37,42,55,28]) list_a=exact_mc_perm_test(xs, ys, 999) print(list_a) 作者:qtey 鏈接:https://www.jianshu.com/p/2fdb3bd07b6f 來源:簡書

    總結

    以上是生活随笔為你收集整理的理解和实现置换检验的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。