Кореляції соціального статусу між подружжями чи партнерами

May 06, 2014 00:24

Захотів подивитись кореляції соц.статусу особи та її партнера в розрізі регіонів у ESS. Також хотів побачити довірчі інтервали.
Вийшло ось таке.



Якось не зміг знайти якоїсь спеціальної функції для такого простого графіку. Тож створив цього монстра:


make.cor<-function(ess.ukr){
    n<-character(length(table(ess.ukr$region)))
    vector1<-numeric(length(table(ess.ukr$region)))
    vector2<-numeric(length(table(ess.ukr$region)))
     vector3<-numeric(length(table(ess.ukr$region)))

for (i in 1:length(table(ess.ukr$region))) {
                                      n[i]<-names(table(ess.ukr$region))[i]
                                      vector1[i] <- round(cor.test(x=subset(ess.ukr, ess.ukr$region==n[i])$isei,
                                                           y=subset(ess.ukr, ess.ukr$region==n[i])$iseip, use="pairwise.complete.obs")$estimate[[1]],2)
                                      vector2[i] <- cor.test(x=subset(ess.ukr, ess.ukr$region==n[i])$isei,
                                                           y=subset(ess.ukr, ess.ukr$region==n[i])$iseip, use="pairwise.complete.obs")$conf.int[1]
                                      vector3[i] <- cor.test(x=subset(ess.ukr, ess.ukr$region==n[i])$isei,
                                                           y=subset(ess.ukr, ess.ukr$region==n[i])$iseip, use="pairwise.complete.obs")$conf.int[2]
                                                                                 }

new.data<-data.frame(correlations=vector1, lower.value=vector2,  higest.value=vector3)
     row.names(new.data)<-n
     new.data<-new.data[order(-new.data$correlations),]

png('ESSUA05.png')
          dotchart(new.data$correlations, cex=.8,
                          xlim=c(floor(min(new.data$lower.value)/10), ceiling(max(new.data$higest.value)/10)),
                          col="blue", labels=paste(row.names(new.data), "(",new.data$correlations, ")"),
                          main="ESS05, Ukraine, cor(isei & iseip)")
          for (i in 1:nrow(new.data)){
          lines(x=c(new.data$lower.value[i],new.data$higest.value[i]), y=c(i,i))
                                                   }
grid()
dev.off()

return(new.data)
                                             }
make.cor(ess.ukr)

ess, Соціологія

Previous post Next post
Up