2013-08-10 12 views
0

У меня есть набор данных в R переменной, повторяющийся 10000 раз и отбираемый 200 раз на каждом повторе, так что матрица 10 000 на 200, я бы хотел рассчитать статистические моменты для переменной до произвольное число. Поэтому в конце я хотел бы, чтобы числовой вектор держал значение моментов.Статистические моменты в R

Я могу получить дисперсию и среднее значение для набора данных, используя colMean и colVar, но они только заходят так далеко.

Я также знаю о пакете моментов в R, однако использование команды all.moments возвращает мне моменты для каждого курса времени или обработку каждого столбца или строки как отдельной переменной, а не то, что я хочу.

Кто-нибудь знает эквивалент colMean и colVar для моментов более высокого порядка? А если возможно и для перекрестных моментов?

Большое спасибо!

ответ

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 обладает centralmoments и rawmoments имеет сырые моменты, вы можете определить, как многие моменты, которые нужно предпринять, изменяя значение NumMoments. Обратите внимание, что первый ряд в «центрах» будет равен примерно 0.

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

EDIT: хорошо, по-видимому, вы хотите "центральные моменты"

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

Нет, это будет вычислять средства для каждого столбца (наблюдения). Я хочу получить моменты более высокого порядка i.e E (x-mu)^... – user124123

+0

Мой код вычисляет «моменты момента более высокого порядка». то, что вы просите, обычно называют «центральными моментами» – bravenewdude

+0

Нет, это не работает, это создает матрицы, заполненные значениями NA. – user124123

0

я украл этот код из малоизвестного R пакета e1071:

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 
    } 

Вы можете сложить, что в ваше кода путем подачи их по одной колонке за раз

Смежные вопросы