La funzione standard cov
calcola la matrice di covarianza del campione, voglio avere la matrice di covarianza della popolazione.Come ridefinire cov per calcolare la matrice di covarianza della popolazione
ho provato la seguente:
cov.pop <- function(x,y=NULL) {
cov(x,y)*(length(x)-1)/length(x)
}
> sapply(list(Apple,HP,Microsoft),cov.pop,y=Apple) #correct
[1] 0.7861672 0.1363396 0.2223303
> sapply(list(Apple,HP,Microsoft),cov.pop,y=HP) #correct
[1] 0.13633964 0.09560376 0.05226032
> sapply(list(Apple,HP,Microsoft),cov.pop,y=Microsoft) #correct
[1] 0.22233028 0.05226032 0.13519964
> cov.pop(cbind(Apple,HP,Microsoft)) #not correct
Apple HP Microsoft
Apple 0.8444018 0.14643887 0.23879919
HP 0.1464389 0.10268552 0.05613145
Microsoft 0.2387992 0.05613145 0.14521443
La mia domanda
C'è un modo semplice per modificare la funzione cov.pop
per ottenere la matrice di covarianza popolazione corretta?
+1 e accettato: è fantastico, grazie! Ho pensato a qualcosa del genere ma "NROW (x)" in realtà fa il trucco :-) – vonjd
@vonjd Felice di sapere che ha funzionato. Grazie per il feedback – akrun