# Κεφάλαιο 11 # Υπολογισμός της ανάλυσης απλής παλινδρόμησης στο R # Φορτώνουμε το ακόλουθο πακέτο library(foreign) # Απόδοση των δεδομένων του αρχείου chapter11_1.sav στο πλαίσιο δεδομένων ch11a ch11a<-read.spss('chapter11_1.sav', to.data.frame=T) # Βασικός έλεγχος του πλαισίου δεδομένων str(ch11a) summary(ch11a) # Ανάλυση απλής παλινδρόμησης summary(lm(health~optimism, ch11a)) # Υπολογισμός της ανάλυσης πολλαπλής παλινδρόμησης στο R # Φορτώνουμε τα ακόλουθα πακέτα library(foreign) library(QuantPsyc) library(car) library(perturb) # Απόδοση των δεδομένων του αρχείου chapter11_2.sav στο πλαίσιο δεδομένων ch11b ch11b<-read.spss('chapter11_2.sav', to.data.frame=T) # Βασικός έλεγχος του πλαισίου δεδομένων str(ch11b) summary(ch11b) # Παρουσίαση όλων των διαγραμμάτων διασποράς plot(ch11b) # Ανάλυση πολλαπλής παλινδρόμησης (Forced Entry) summary(lmm <-lm(happiness~eq_perc+eq_cntrl+eq_use+eq_under+emot_po+emot_ne, ch11b)) # Τυποποιημένοι συντελεστές παλινδρόμησης std.coef <- function(lmod) {lmod$coef[-1]*apply(lmod$model[,-1],2,sd)/sd(lmod$model[,1]) exclude intercept} std.coef(lmm) # Απευθείας υπολογισμός από το πακέτο QuantPsyc lm.beta(lmm) # Έλεγχος πολυσυγγραμμικότητας από το πακέτο car vif(lmm) # «παράγοντες πληθωριστικής διασποράς» # Έλεγχος πολυσυγγραμμικότητας από το πακέτο perturb colldiag(lmm) # οι δείκτες ανοχής στην 1η στήλη # Γραφικός έλεγχος υπολοίπων par(mfrow=c(2,2)) # για να δείξει και τα τέσσερα γραφικά μαζί plot(lmm) par(mfrow=c(1,1)) hist(scale(lmm$resid)) # Ιστόγραμμα με κανονική καμπύλη histnorm<-function(vt,...) { hist(vt, col="light blue", las=1,...) hh<-hist(vt, plot=F) barwidth<-diff(hh$breaks[1:2]) area<-length(vt)*barwidth x<-seq(min(vt),max(vt),length.out=100) lines(x,dnorm(x,mean(vt),sd(vt))*area, col="red") } sr <- lmm$resid/sd(lmm$resid) # Τυποποιημένα υπόλοιπα sr <- scale(lmm$resid) # z-score standardization sr <- rstandard(lmm) # Εναλλακτικός υπολογισμός histnorm(sr,xlab="Regression Standardized Residual",main="Histogram\nCriterion Variable: Ευτυχία") text(2,40,paste("Mean =",formatC(mean(sr),3)),pos=4,xpd=NA) text(2,38,paste("Std. Dev. =",round(sd(sr),3)),pos=4,xpd=NA) text(2,36,paste("N =",length(sr)),pos=4,xpd=NA) # Ιεραρχική παλινδρόμηση sm1<-summary(lm1<- lm(happiness~eq_perc+eq_cntrl+eq_use+eq_under,ch11b)) sm2<-summary(lm2 <- update(lm1,.~.+emot_po+emot_ne)) # Παρουσίαση ενδιάμεσων βημάτων sm1 sm2 # Υπολογισμός διαφοράς συντελεστών προσδιορισμού print(DR12 <- sm2$r.squared - sm1$r.squared) # Σύγκριση διαδοχικών μοντέλων με κριτήριο F anova(lm1,lm2) # Υπολογισμός της λογιστικής παλινδρόμησης στο R # Φορτώνουμε τα ακόλουθα πακέτα library(foreign) library(jmv) # Απόδοση των δεδομένων του αρχείου chapter11_3.sav στο πλαίσιο δεδομένων ch11c ch11c<-read.spss('chapter11_3.sav', to.data.frame=T) # Βασικός έλεγχος του πλαισίου δεδομένων str(ch11c) summary(ch11c) # Παρουσίαση όλων των διαγραμμάτων διασποράς plot(ch11c) # Ανάλυση λογιστικής παλινδρόμησης (Μέθοδος 1) glm.fit<-glm(drop_out ~ gender + efficacy + income + indecisive, data=ch11c, family=binomial) summary(glm.fit) # Ανάλυση λογιστικής παλινδρόμησης μέσω του πακέτου jmv (Μέθοδος 2) # Παίρνουμε σχεδόν όλους τους συντελεστές/δείκτες που υπολογίζει και το SPSS logRegBin( data = ch11c, dep = drop_out, covs = vars(efficacy, income, indecisive), factors = gender, blocks = list( list("efficacy", "income", "indecisive", "gender")), refLevels = list( list(var="drop_out", ref="Μη Εγκατάλειψη"), list(var="gender", ref="Αγόρι")), modelTest=T, pseudoR2=c("r2n", "r2mf", "r2cs"), acc=T, spec=T, sens=T)