簡體   English   中英

R中的統計矩

[英]statistical moments in R

我有一個變量R的數據集,重復10,000次,每次重復采樣200次,因此得到10,000 x 200矩陣,我想計算變量的統計矩,最大為任意數。 因此,最后我想要一個包含矩值的數值矢量。

我可以使用colMean和colVar來獲得數據集的方差和均值,但它們僅適用於此。

我也知道R中的moments包,但是使用all.moments命令返回每個時間過程的矩,或者將每一列或每一行視為一個單獨的變量,而不是我想要的。

有人知道高階矩的等於colMean和colVar嗎? 如果可能的話,還可以用於交叉時刻?

非常感謝!

我從一個晦澀的Re1071偷走了這段代碼:

theskew<- function (x) {
x<-as.vector(x)
 sum((x-mean(x))^3)/(length(x)*sd(x)^3)
 }
thekurt <- function (x) {
x<-as.vector(x)
  sum((x-mean(x))^4)/(length(x)*var(x)^2) - 3
  }

您可以一次輸入一欄,將其折疊到代碼中

好的,昨天這樣做是為了后代,這是一個循環,可以完成我所要求的。

假設您的數據是您正在測量的變量的時間過程,並且您想要該變量的時刻:

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。

這是您要找的東西嗎?

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)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM