Re: Korrelaatiot ja kovarianssimatriisit

[vastaus aiempaan viestiin]

Kirjoittaja: Reijo Sund
Sähköposti:    -
Päiväys: 8.3.2011 14:05

Hei!

Olen esitellyt vuonna 2005 seminaarissa mainittujen
korrelaatioiden laskemista R:ää hyödyntäen (oli ihan
sukro sitä varten). Alla sukro ja esimerkkikoodia.

terv.
Reijo


***********************************************


SAVE HCORR / Heterogeneous Correlation Matrix

Generoidaan testiaineisto

MATRIX HETCOR
/// X1     X2     X3     X4
X1 1.0000 0.4198 0.1169 0.3112
X2 0.4198 1.0000 0.2695 0.3013
X3 0.1169 0.2695 1.0000 0.5418
X4 0.3112 0.3013 0.5418 1.0000

MAT SAVE HETCOR
MNSIMUL HETCOR,*,HC01,1000,0 / RND=rand(999)

..................................................................................
Luokitellaan muutama jatkuva muuttuja

CLASSIFICATION CLA1
-999 - 0.75: 0
0.75 - 999: 1
END

CLASSIFICATION CLA2
-999 - -1: 0
-1 - .5: 1
.5 - 1.5: 2
1.5 - 999: 3
END

FILE EXPAND HC01
VAR Y1:1,Y2:1 TO HC01 / Y1=MISSING Y2=MISSING

CLASSIFY HC01,CLA1,X3,Y1
CLASSIFY HC01,CLA2,X4,Y2

..................................................................................
Sukrokoodi heterogeenisen korrelaatiomatriisin tuottamiseksi
(Tarvitaan R sekä sen paketit polycor ja mvtnorm)

TUTSAVE HCORR
{init}{tempo -1}
{R}{line start}SCRATCH /{act}
{R}FILE COPY {print W1} TO NEW _HCORR{act}
{R}.{copy}{R}
{R}FILE STATUS _HCORR{act}{del line}
{W4=0}
 keruu:
{line start}{save word W2}
 if W2 '=' END then goto jatko
 if W2 '<>' FIELDS: then goto eifi
{W4=1}{del line}
 eifi:
 if W4 = 0 then goto rivipois
{line start}{next word}{next word}{r}{save char W2}
{W3=W3&W2}
 rivipois:
{del line}
{goto keruu}
 jatko:
{del line}{del line}FILE DEL hcorr.dat{act}
{R}FILE LOAD _HCORR TO hcorr.dat / NAMES8=1{act}
{R}.{copy}{R}
{R}SAVEP CUR+2,CUR+9,hcorr.r
{R}* * * R-code start * * *
{R}coltypes <- c(
{R}{line start}{erase}{print W3}
 purku:
{line start}{save char W2}{del}{u}{line end}
 if W2 '=' {sp} then goto etene
 if W2 '=' A then goto numeric
"factor",{R}{goto purku}
 numeric:
"numeric",{R}{goto purku}
 etene:
{l}{del}){R}
data <- read.table("hcorr.dat",TRUE,colClasses = coltypes){R}
library(mvtnorm){R}
library(polycor){R}
tulos <- hetcor(data,ML=TRUE){R}
matriisi <- as.matrix(tulos){R}
write.table(matriisi,"TULOS.DAT"){R}
tulos{R}
{u10}{act}{d10}
* * * R-code end * * *
{R}.{copy}{R}
{W1=hcorr.r}{W2=}{call SR}
{pre}{d}{pre}{d}
{R}.{copy}{R}
{R}LOADP TULOS.DAT,CUR+2{act}
{R}REPLACE ""","",C{act}
{R}{ins}/// {u}{ins}
{line start}{erase}MATRIX HCORR.M
{u}{line start}{erase}MAT SAVE HCORR.M{act}
{line start}{erase}MAT SAVE HCORR.M{act}
{line start}{erase}MAT LOAD HCORR.M{act}
{line start}
{end}

..................................................................................
Esimerkki 2 - Riskikäsitysten polykorinen korrelaatio

LOAD RISKI2

..................................................................................
Esimerkki - jatkuvat muuttujat tunnistetaan maskista A

VARS=X1(A),X2(A),Y1(B),Y2(B)
/HCORR HC01

Vastaukset:

Survo-keskustelupalstan (2001-2013) viestit arkistoitiin aika ajoin sukrolla, joka automaattisesti rakensi viesteistä (yli 1600 kpl) HTML-muotoisen sivukokonaisuuden. Vuoden 2013 alusta Survo-keskustelua on jatkettu entistäkin aktiivisemmin osoitteessa forum.survo.fi. Tervetuloa mukaan!

Etusivu  |  Keskustelu
Copyright © Survo Systems 2001-2013. All rights reserved.
Updated 2013-06-15.