2017-08-24 6 views
0

私は、2つの独立した評価を比較するケースが多い(600以上)データがあります。私は、観察された種の相対的存在量に基づいて、評価間の差異がランダムな変動(プロット位置/方法の違い)または人為的誤差によるものかどうかを判断したい。評価は、森林管理者(FM;概して眼の見積もり)とその結果の検証を担当する省庁(MNRF;集中プロットベースの調査)によって実施された。 p値が< 0.05である結果は、2つの試料が同じ集団から採取される可能性は低いか、または集中力の低い方法が十分に正確でないことを示す。フィルタ0の値を出力し、カイ2乗結果をデータフレームに出力します。

種の組成は、MNRFによって確立されたプロットの数に基づいて種によって樹木の数に変換されています。遭遇する可能性のあるいくつかの種があるが、いずれの場合も一般に6未満である。種は2文字コード(例えばPJ =ジャッキーパイン、BW =白樺)で識別される。単一の場合の例は次のとおりです。

> head(case545) 

    Case Source PJ SB BW PO BF SW PR LA MR CW PW 
1 545 MNRF 68 21 17 15 1 0 0 0 0 0 0 
2 545  FM 101 13 13 0 0 0 0 0 0 0 0 

私は、コードを使用してこのような場合のために、私が欲しいの統計を計算することができます。

​​

私の問題は、私は多くの多くの例を持っていると私は理解できないですそれぞれの場合に使用する値をRにどのように伝えるかを決定します。私の知る限り、論理の流れを言うことができるように、両方の評価が0

  • の値を記録した種を

    1. 特定し、排除しなければならないテストを実行して値がchisq.test
    2. 正しく整理されていることを確認し、各ケースのX2とpの値を持つ新しいテーブルを出力してください。

    何か助けていただければ幸いです。

  • 答えて

    0

    これは使用している可能性がありますが、データには微妙な違いがあります。

    この例では、私は命名規則で2例caseXXX

    case545 <- data.frame(Case="545", 
    Source=c("XX","X1"), PJ=c(68,21),SB=c(17,13),BW=c(1,0), SW=c(0,0)) 
    case546 <- data.frame(Case="546", 
    Source=c("XX","X1"), PJ=c(100,300),SB=c(0,0),BW=c(400,0), SW=c(300,500)) 
    

    を再作成私たちは、その命名規則

    library(dplyr) 
    DF <- ls(pattern = "case") 
    

    ですべてdata.framesのリストを作成してそれから、関数を適用data.framesのリストに追加し、行をまとめて1つのdata.frameを作成します。

    この機能は、あなたが求めていることを行います。 1は、取得のみ0 2-計算統計的検定 data.frame

    Output <- bind_rows(lapply(DF, function(DF){ 
        TMP <- get(DF) 
        TMP <- TMP %>% 
        select(grep(pattern = F,colSums(TMP != 0) == 0)) 
        TMP <- chisq.test(rbind(TMP[1,-c(1:2)],TMP[2,-c(1:2)])) 
        TMP <- data.frame(X2=TMP$statistic,p=TMP$p.value,case=DF) 
        return(TMP) 
    })) 
    
    > Output 
          X2    p case 
    1 4.703423 9.520608e-02 case545 
    2 550.000000 3.706956e-120 case546 
    
    +0

    感謝として、私たちにX2統計量とp値を3-与えると列を取り除きます!また、出力の自由度が必要なので、最後の行を編集して編集してください: TMP < - data.frame(X2 = TMP $統計、d_f = TMP $パラメータ、p = TMP $ p.value、case = DF ) –

    +0

    私の実際のデータセットは13種類あります(ほとんどが0です)。私はあなたが提案したように、6例(13変数のうち2 obs)を生成することができました。残念ながら、テスト実行で次のエラーが発生しました select(。、grep(pattern = F、colSums(TMP!= 0)): 未使用の引数(grep(pattern = F、colSums(TMP!= 0)== 0)) –

    +0

    このコードでは、分子の数(列右?)。どの列についても観測がない場合(またはソースとケースの組み合わせ)はありますか? – eclark

    関連する問題