quinta-feira, 16 de outubro de 2008

Agora sim!!!!


### Agora sim, existe correlação.
set.seed(1133)
x<-rnorm(200)
y<-x^2
dados<-cbind(x,y)

chi.plot<-function(dados,ro){
n<-nrow(dados)
x<-dados[,1]
y<-dados[,2]
H<-c(rep(0,n))
F<-c(rep(0,n))
G<-c(rep(0,n))
S<-c(rep(0,n))
chi<-c(rep(0,n))
lambda<-c(rep(0,n))
for(i in 1:n){
k1<-0
k2<-0
k3<-0
for(j in 1:n){
if(j!=i){
k1<-ifelse((x[j]<=x[i] & y[j]<=y[i]),k1+1,k1)
k2<-ifelse((x[j]<=x[i]),k2+1,k2)
k3<-ifelse((y[j]<=y[i]),k3+1,k3)
}
}
H[i]<-k1/(n-1)
F[i]<-k2/(n-1)
G[i]<-k3/(n-1)
S[i]<-sign((F[i]-0.5)*(G[i]-0.5))
c<-c((F[i]-0.5)^2,(G[i]-0.5)^2)
lambda[i]<-4*S[i]*max(c)
chi[i]<-(H[i]-F[i]*G[i])/sqrt(F[i]*(1-F[i])*G[i]*(1-G[i]))
}
nf <- layout(cbind(c(0,1,1,0), c(0,2,2,0)))
plot(x,y,pch=19,main='Scatterplot')
plot(lambda,chi,pch=19,xlim=c(-1,1),ylim=c(-1,1),
main='Chi-plot, p=0.95',sub=paste('ro=',ro),xlab=expression(lambda),
ylab=expression(chi),las=2)
abline(h=0,lty=2)
abline(v=0,lty=2)
abline(h=-1.78/sqrt(n),lty=2)
abline(h=1.78/sqrt(n),lty=2)
}

chi.plot(dados,0.91)

Será o coeficiente de correlação o melhor? Será que uma associação entre variáveis é sempre linear?

set.seed(1133)
#### CASO 1
x<-rnorm(200)
y<-x
plot(x,y,type="p")

### Possibilidade 1
cor(x,y)

### Possibilidade 2
cor.test(x, y, method = "kendall", alternative = "two.sided")
cor.test(x, y, method = "spearman", alternative = "two.sided")

### CASO 2

y2<-2*x
plot(x,y2,type="p")
cor(x,y2)
cor.test(x, y2, method = "kendall", alternative = "two.sided")
cor.test(x, y2, method = "spearman", alternative = "two.sided")


#### CASO 3

y3<-x^2

plot(x,y3,type="p")

### Possibilidade 1
cor(x,y3)

### Possibilidade 2
cor.test(x, y3, method = "kendall", alternative = "two.sided")
cor.test(x, y3, method = "spearman", alternative = "two.sided")

### CASO 4

y4<-2*x^2
plot(x,y4,type="p")
cor(x,y4)
cor.test(x, y4, method = "kendall", alternative = "two.sided")
cor.test(x, y4, method = "spearman", alternative = "two.sided")

## CASO 5

y5<-x^2+ x^4+rnorm(200,2,1)
plot(x,y5,type="p")
cor(x,y5)
cor.test(x, y5, method = "kendall", alternative = "two.sided")
cor.test(x, y5, method = "spearman", alternative = "two.sided")

### Gerando outliers
xx<-c(x,rnorm(3))
y6<-c(y5,rnorm(3,100,10))
plot(xx,y6,type="p")

cor(xx,y6)
cor.test(xx, y6, method = "kendall", alternative = "two.sided")
cor.test(xx, y6, method = "spearman", alternative = "two.sided")



### Brincando um pouco...

plot(ibov,csn)
cor(csn,ibov)
cor.test(csn, ibov, method = "kendall", alternative = "two.sided")
cor.test(csn, ibov, method = "spearman", alternative = "two.sided"
)

### vale apena dizer, que este é apenas um exemplo,
## até pode ser dado em sala, mas é um caso específico
## Bem, agora estou estudando algo que, até então, só tinha ouvido falar: Cópulas.