0

5 つの異なる方法を比較するマルチ処理データに対してクルスカル ウォリス検定を実行しました。

友人が spss での計算を見せてくれました。結果には各方法の平均ランクが含まれていました。

R では、データ セットに適用するときにのみchi2anddf valueと を取得します。これらの値は spss の値と同じですが、ランクが得られません。p-valuekruskal.test

計算のランクを出力するにはどうすればよいですか? 私のコードは次のようになります。

 comparison <- kruskal.test(all,V3,p.adj="bon",group=FALSE, main="over")

比較を印刷すると、次のようになります。

Kruskal-Wallis rank sum test
data:  all
Kruskal-Wallis chi-squared = 131.4412, df = 4, p-value < 2.2e-16

しかし、spss から次のような追加出力を取得したいと思います。

Type    H   Middle Rank
1,00    57  121.11
2,00    57  148.32
3,00    57  217.49
4,00    57  53.75
5,00    57  174.33
total   285 

rでこれを行うにはどうすればよいですか?

4

2 に答える 2

2

残念ながら、必要なテーブルは自分で計算する必要があります。幸いなことに、私はあなたのために関数を作りました:

#create some random data
ozone <- airquality$Ozone
names(ozone) <- airquality$Month


spssOutput <- function(vector) {
  # This function takes your data as one long
  # vector and ranks it. After that it computes 
  # the mean rank of each group. The groupes
  # need to be given as names to the vector.
  # the function returns a data frame with
  # the results in SPSS style.

  ma <- matrix(, ncol=3, nrow= 0)
  r  <- rank(vector, na.last = NA)
  to <- 0
  for(n in unique(names(r))){
    # compute the rank mean for group n
    g  <- r[names(r) == n]
    gt <- length(g)
    rm <- sum(g)/gt
    to <- to + gt
    ma <- rbind(ma, c(n, gt, rm))
  }
  colnames(ma) <- c("Type","H","Middle Rank")
  ma <- rbind(ma, c("total", to, ""))
  as.data.frame(ma)
}

# calculate everything
out <- spssOutput(ozone)
print(out, row.names= FALSE)
kruskal.test(Ozone ~ Month, data = airquality) 

これにより、次の出力が得られます。

Type    H      Middle Rank
 5     26 36.6923076923077
 6      9 48.7222222222222
 7     26 77.9038461538462
 8     26 75.2307692307692
 9     29 48.6896551724138
total 116                 

Kruskal-Wallis rank sum test

data:  Ozone by Month
Kruskal-Wallis chi-squared = 29.2666, df = 4, p-value = 6.901e-06

データを共有していないため、これがデータ セットに対してどのように機能するかを自分で把握する必要があります。

于 2015-03-02T19:39:24.383 に答える