Die Standardfunktion cov
berechnet die Stichprobenkovarianzmatrix, ich möchte die Populationskovarianzmatrix haben.So definieren Sie cov neu, um die Populationskovarianzmatrix zu berechnen
versuchte ich folgende:
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
Meine Frage
Gibt es eine einfache Möglichkeit, die cov.pop
Funktion erhält die korrekte Bevölkerung Kovarianzmatrix zu ändern?
+1 und akzeptiert: Das ist fantastisch, danke! Ich dachte über etwas in dieser Richtung nach, aber "NROW (x)" macht den Trick :-) – vonjd
@vonjd Gut zu wissen, dass es funktioniert hat. Danke für die Rückmeldung – akrun