0

変数のRにデータセットがあり、10,000回繰り返され、各繰り返しで200回サンプリングされたので、10,000 x 200の行列で、変数の統計モーメントを任意の数まで計算したいと思います。したがって、最終的には、モーメントの値を保持する数値ベクトルが必要です。

colMean と colVar を使用してデータ セットの分散と平均を取得できますが、これまでのところしかわかりません。

私はRのモーメントパッケージも認識していますが、all.momentsコマンドを使用すると、時間経過ごとにモーメントが返されるか、各列または行が私が望むものではなく、個々の変数として扱われます。

高次モーメントの colMean と colVar に相当するものを知っている人はいますか? 可能であればクロスモーメントも?

どうもありがとう!

4

3 に答える 3

0

さて、後世のために昨日これを行いました。これは、私が求めたことを実行するループです。

データが測定している変数の時間経過であり、その変数のモーメントが必要な場合:

rm(list=ls())

yourdata<-read.table("whereveryourdatais/and/variableyouwant")

yourdata<-t(yourdata) #only do this at your own discretion


mu<-colMeans(yourdata,1:ncol(yourdata))

NumMoments <- 5
rawmoments <- matrix(NA, nrow=NumMoments, ncol=ncol(yourdata))

for(i in 1:NumMoments) {
  rawmoments[i, ] <- colMeans(yourdata^i)
}
plot(rawmoments[1,])

holder<-matrix(NA,nrow=nrow(yourdata),ncol=ncol(yourdata))
middles<-matrix(NA,nrow=1,ncol=ncol(yourdata))

for(j in 1:nrow(yourdata)){
  for(o in 1:ncol(rawmoments)){
    middles[o]<-yourdata[j,o]-rawmoments[1,o]
  }
  holder[j,] <- middles 
}
centmoments<-matrix(NA,nrow=NumMoments,ncol=ncol(yourdata))


for(i in 1:NumMoments){
  centmoments[i,]<-colMeans(holder^i)
}

次にcentmoments、中央rawmomentsのモーメントと生のモーメントがあり、NumMoments の値を変更することで、取得するモーメントの数を指定できます。「centmoments」の最初の行は約 0 になることに注意してください。

于 2013-08-15T12:53:56.290 に答える
-1

これはあなたが探しているものですか?

X <- matrix(1:12, 3, 4) # your data

NumMoments <- 5
moments <- matrix(NA, nrow=NumMoments, ncol=ncol(X))

for(i in 1:NumMoments) {
  moments[i, ] <- colMeans(X^i)
}

編集:わかりました、どうやら「中心的な瞬間」が欲しいようです

X <- matrix(1:12, 3, 4)

NumMoments <- 5
moments <- matrix(NA, nrow=NumMoments, ncol=ncol(X))

Y <- X

for(i in 1:ncol(X)) {
  Y[, i] <- Y[, i] - moments[1, i]
}

for(i in 2:NumMoments) {
  moments[i, ] <- colMeans(Y^i)
}
于 2013-08-10T15:13:32.130 に答える