##reasonable guess:
bytype[is.na(bytype)] <- 3
hh <- hc(data2,modelName="EII")
hclass(hh)[1:10,1:10]
mc <-Mclust(data2)
hc <- hclass(hh)
par(mfrow=c(2,2))
plot(data2,col=hc[,1])
plot(data2,col=hc[,2])
plot(data2,col=hc[,4])
plot(data2,col=hc[,5])
mclustBIC(hh)
mclustBIC(hc)
hh <- hc(x$points,modelName="EII")
classes <- hclass(hh)
print(hh)
plot(x$points[,1:2],cex=4,col=classes[,8])
text(x$points[,1],x$points[,2],LETTERS)
knitr::kable(classes)
library(flexmix)
data.raw <- read.csv("misenate.csv")
key <- read.csv("misenate-key.csv",header=F)
keep<- !is.na(rowMeans(data.raw[,-(1:2)]))
data <- data.raw[keep==TRUE,]
party <- data$Party
votes <- as.matrix(data[,-(1:2)])
##model with a single group is easy;
model1 <- flexmix(votes~1,k=1, model=FLXMCmvbinary())
model2 <- flexmix(votes~1,k=2, model=FLXMCmvbinary())
table(party,clusters(model2))
model4 <- flexmix(votes~1,k=4,model=FLXMCmvbinary())
table(party,clusters(model4))
parameters(model4)
matplot(parameters(model4),type="o",main="Voting by block on each issue")
#set.seed(100)
modelsx <- stepFlexmix(votes~1,k=1:6,model=FLXMCmvbinary(),nrep=10,drop=FALSE)
models
modelsx
plot(modelsx)
bestmodel <- getModel(models,"BIC")
bestmodel <- getModel(modelsx,"BIC")
bestmodel
summary(bestmodel)
model2 <- getModel(modelsx,5)
parameters(model2)
plot(bestmodel)
parameters(bestmodel)
clusters(bestmodel)
table(party,clusters(bestmodel))
bestmodel <- getModel(models,4)
bestmodel <- getModel(modelsx,4)
bestmodel
summary(bestmodel)
plot(bestmodel)
parameters(bestmodel)
clusters(bestmodel)
table(party,clusters(bestmodel))
matplot(parameters(bestmodel),1:54,type="o",ylab="Issue",xlab="Model parameter value")
grid()
#set.seed(101)
tab <- table(party,clusters(bestmodel))
gparty <-c("D","R")[apply(tab,2,which.max)]
p <- parameters(bestmodel)
grp <- kmeans(p,centers=7)
##find the mean positive vote probability across cluster.
#grpord <- rank(aggregate(rowMeans(p),list(grp$cluster),mean)$x)
ord <- order(grp$cluster)#(grpord[grp$cluster])
par(mar=c(3,25,2,1),las=1)
matplot(p[ord,],1:54,pch=gparty,type="o",yaxt="n",ylab="",xlab="Agreement with rater on bill")
grid()
axis(2,1:54,paste(paste(key$V1,key$V2)[ord],sort(grp$cluster)),cex.axis=.75)
data2 <- matrix(c(rnorm(200,mean=centers[,1],sd=.1),
rnorm(200,mean=centers[,2],sd=1)),ncol=2,byrow=T)
colnames(data2) <- c("V1","V2")
plot(data2,col=rep(c("red","darkgreen"),each=100))
points(t(centers),pch=16,cex=2,col=c("red","darkgreen"))
modelx <- Mclust(data2)
summary(modelx)
plot(modelx,what=c("classification"))
table(rep(1:2,each=100),modelx$classification)
k <- kmeans(data2,centers=2)
plot(data2,col=c("red","darkgreen")[k$cluster])
table(rep(1:2,each=100),k$cluster)
plot(modelx,"BIC")
modelEEE <- Mclust(data2,modelNames=c("EEE","EII","EVE"))
plot(modelEEE,what="classification")
set.seed(100)
centers <- matrix(runif(6),ncol=3)
par(mfrow=c(1,2))
data1 <- matrix(c(rnorm(200,mean=centers[,1],sd=.02),
rnorm(200,mean=centers[,2],sd=.02),
rnorm(200,mean=centers[,3],sd=.02)),
ncol=2,byrow=T)
colnames(data1) <- c("V1","V2")
plot(data1,col=rep(c("red","darkgreen","blue"),each=100))
points(t(centers),pch=16,cex=2,col="black")
data2 <- matrix(c(rnorm(200,mean=centers[,1],sd=.1),
rnorm(200,mean=centers[,2],sd=.1),
rnorm(200,mean=centers[,3],sd=.1)),ncol=2,byrow=T)
colnames(data2) <- c("V1","V2")
plot(data2,col=rep(c("red","darkgreen","blue"),each=100))
points(t(centers),pch=16,cex=2,col=c("red","darkgreen","blue"))
library(mvtnorm)
truth <- rep(1:3,each=100)
center1like <- dmvnorm(data1,mean=centers[,1],sigma=diag(rep(.02,2)))
center2like <- dmvnorm(data1,mean=centers[,2],sigma=diag(rep(.02,2)))
center3like <- dmvnorm(data1,mean=centers[,3],sigma=diag(rep(.02,2)))
likes <-cbind(center1like,center2like,center3like)
group <- apply(likes,1,which.max)
matplot(cbind(center1like,center2like,center3like))
table(truth,group)
plot(data2,col=c("red","darkgreen","blue")[group])
points(t(centers),pch=16,cex=2,col=c("red","darkgreen","blue"))
plot(data2,col=c("red","darkgreen","blue")[group])
points(t(centers),pch=16,cex=2,col=c("red","darkgreen","blue"))
library(mvtnorm)
truth <- rep(1:3,each=100)
center1like <- dmvnorm(data1,mean=centers[,1],sigma=diag(rep(.02,2)))
center2like <- dmvnorm(data1,mean=centers[,2],sigma=diag(rep(.02,2)))
center3like <- dmvnorm(data1,mean=centers[,3],sigma=diag(rep(.02,2)))
likes <-cbind(center1like,center2like,center3like)
group <- apply(likes,1,which.max)
matplot(cbind(center1like,center2like,center3like))
plot(data2,col=c("red","darkgreen","blue")[group])
points(t(centers),pch=16,cex=2,col=c("red","darkgreen","blue"))
table(truth,group)
plot(data1,col=c("red","darkgreen","blue")[group])
points(t(centers),pch=16,cex=2,col=c("red","darkgreen","blue"))
truth <- rep(1:3,each=100)
center1like <- dmvnorm(data2,mean=centers[,1],sigma=diag(rep(.02,2)))
center2like <- dmvnorm(data2,mean=centers[,2],sigma=diag(rep(.02,2)))
center3like <- dmvnorm(data2,mean=centers[,3],sigma=diag(rep(.02,2)))
likes <-cbind(center1like,center2like,center3like)
group <- apply(likes,1,which.max)
matplot(cbind(center1like,center2like,center3like))
matplot(cbind(center1like,center2like,center3like), ylab="Likelihood of each group")
data2 <- matrix(c(rnorm(200,mean=centers[,1],sd=.1),
rnorm(200,mean=centers[,2],sd=.1),
rnorm(200,mean=centers[,3],sd=.1)),ncol=2,byrow=T)
colnames(data2) <- c("V1","V2")
plot(data2,col=rep(c("red","darkgreen","blue"),each=100))
points(t(centers),pch=16,cex=2,col=c("red","darkgreen","blue"))
truth <- rep(1:3,each=100)
center1like <- dmvnorm(data2,mean=centers[,1],sigma=diag(rep(.02,2)))
center2like <- dmvnorm(data2,mean=centers[,2],sigma=diag(rep(.02,2)))
center3like <- dmvnorm(data2,mean=centers[,3],sigma=diag(rep(.02,2)))
likes <-cbind(center1like,center2like,center3like)
group <- apply(likes,1,which.max)
matplot(cbind(center1like,center2like,center3like), ylab="Likelihood of each group")
plot(data2,col=c("red","darkgreen","blue")[group])
points(t(centers),pch=16,cex=2,col=c("red","darkgreen","blue"))
plot(data2,col=c("red","darkgreen","blue")[group],pch=rep(c(15,16,17),each=100))
points(t(centers),pch=16,cex=2,col=c("red","darkgreen","blue"))
library(mvtnorm)
truth <- rep(1:3,each=100)
center1like <- dmvnorm(data1,mean=centers[,1],sigma=diag(rep(.02,2)))
center2like <- dmvnorm(data1,mean=centers[,2],sigma=diag(rep(.02,2)))
center3like <- dmvnorm(data1,mean=centers[,3],sigma=diag(rep(.02,2)))
likes <-cbind(center1like,center2like,center3like)
group <- apply(likes,1,which.max)
matplot(cbind(center1like,center2like,center3like), ylab="Likelihood of each group")
plot(data1,col=c("red","darkgreen","blue")[group],pch=rep(c(15,16,17),each=100))
points(t(centers),pch=16,cex=2,col=c("red","darkgreen","blue"))
table(truth,group)
center1like <- dmvnorm(data2,mean=centers[,1],sigma=diag(rep(.07,2)))
center2like <- dmvnorm(data2,mean=centers[,2],sigma=diag(rep(.07,2)))
center3like <- dmvnorm(data2,mean=centers[,3],sigma=diag(rep(.07,2)))
likes <-cbind(center1like,center2like,center3like)
matplot(likes)
group <- apply(likes,1,which.max)
table(truth,group)
center1like <- dmvnorm(data2,mean=centers[,1],sigma=diag(rep(.07,2)))
center2like <- dmvnorm(data2,mean=centers[,2],sigma=diag(rep(.07,2)))
center3like <- dmvnorm(data2,mean=centers[,3],sigma=diag(rep(.07,2)))
likes <-cbind(center1like,center2like,center3like)
matplot(likes)
group <- apply(likes,1,which.max)
table(truth,group)
plot(data2,col=c("red","darkgreen","blue")[group],pch=rep(c(15,16,17),each=100))
points(t(centers),pch=16,cex=2,col=c("red","darkgreen","blue"))
plot(data2,col=c("red","darkgreen","blue")[group],pch=rep(c(1,16,22),each=100))
points(t(centers),pch=16,cex=2,col=c("red","darkgreen","blue"))
plot(data2,col=c("red","darkgreen","blue")[group],pch=rep(c(1,16,11),each=100))
points(t(centers),pch=16,cex=2,col=c("red","darkgreen","blue"))
data2 |> ggplot(aes(x=V1,y=V2,color=factor(group))) + geom_point() + geom_point(data=as.data.frame(t(centers)),aes(x=V1,y=V2),color="black",size=5,shape=4)
data2 |> ggplot(aes(x=V1,y=V2,color=factor(group))) + geom_point() + geom_point(data=as.data.frame(t(centers)),aes(x=V1,y=V2),color="black",size=5,shape=4)
library(ggplot2)
data2 |> ggplot(aes(x=V1,y=V2,color=factor(group))) + geom_point() + geom_point(data=as.data.frame(t(centers)),aes(x=V1,y=V2),color="black",size=5,shape=4)
data.frame(data2,original=rep(c("A","B","C") ,each=100)) |> ggplot(aes(x=V1,y=V2,color=factor(group),shape)) + geom_point() + geom_point(data=as.data.frame(t(centers)),aes(x=V1,y=V2),color="black",size=5,shape=4)
data.frame(data2,original=rep(c("A","B","C") , each=100)) |>
ggplot(aes(x=V1,y=V2,color=factor(group),shape=original)) + geom_point() + geom_point(data=as.data.frame(t(centers)),aes(x=V1,y=V2),color="black",size=5,shape=4)
data.frame(data2,original=rep(c("A","B","C") , each=100)) |>
ggplot(aes(x=V1,y=V2,color=factor(group),shape=original)) + geom_point(size=3) + geom_point(data=as.data.frame(t(centers)),aes(x=V1,y=V2),color="black",size=5,shape=4)
data.frame(data2,original=rep(c("1","2","3") , each=100)) |>
ggplot(aes(x=V1,y=V2,color=factor(group),shape=original)) + geom_point(size=3) + geom_point(data=as.data.frame(t(centers)),aes(x=V1,y=V2),color="black",size=5,shape=4)
library(ggplot2)
data.frame(data2,original=rep(c("1","2","3") , each=100)) |>
ggplot(aes(x=V1,y=V2,color=factor(group),shape=original)) + geom_point(size=3) + geom_point(data=as.data.frame(t(centers)),aes(x=V1,y=V2),color="black",size=5,shape=4) +
theme_bw()
library(ggplot2)
data.frame(data1,original=rep(c("1","2","3") , each=100)) |>
ggplot(aes(x=V1,y=V2,color=factor(group),shape=original)) + geom_point(size=3) + geom_point(data=as.data.frame(t(centers)),aes(x=V1,y=V2),color="black",size=5,shape=4) +
theme_bw()
library(mvtnorm)
truth <- rep(1:3,each=100)
center1like <- dmvnorm(data1,mean=centers[,1],sigma=diag(rep(.02,2)))
center2like <- dmvnorm(data1,mean=centers[,2],sigma=diag(rep(.02,2)))
center3like <- dmvnorm(data1,mean=centers[,3],sigma=diag(rep(.02,2)))
likes <-cbind(center1like,center2like,center3like)
group <- apply(likes,1,which.max)
matplot(cbind(center1like,center2like,center3like), ylab="Likelihood of each group")
library(ggplot2)
data.frame(data1,original=rep(c("1","2","3") , each=100)) |>
ggplot(aes(x=V1,y=V2,color=factor(group),shape=original)) + geom_point(size=3) + geom_point(data=as.data.frame(t(centers)),aes(x=V1,y=V2),color="black",size=5,shape=4) +
theme_bw()
table(truth,group)
group <- sample(1:3,300,replace=T)
##Repeat the following until it converges:
par(mfrow=c(1,2))
for(i in 1:6)
{
##recompute centers and spread based on these groupings (maximum-likelihood estimation)
groupmeans<- aggregate(data2,list(group),mean)[,-1]
groupsd <- aggregate(data2,list(group),sd)
plot(data2,col=group,main="Current configuration")
points(groupmeans,pch=16,cex=2,col=1:3)
##estimate likelihood for each grouping:
center1like <- dmvnorm(data2,mean=unlist(groupmeans[1,]),sigma=diag(groupsd[1,2:3]))
center2like <- dmvnorm(data2,mean=unlist(groupmeans[2,]),sigma=diag(groupsd[2,2:3]))
center3like <- dmvnorm(data2,mean=unlist(groupmeans[3,]),sigma=diag(groupsd[3,2:3]))
#center2like <- dmvnorm(data2,mean=groupmeans[2,],sigma=diag(groupsd[2,2:3]))
#center3like <- dmvnorm(data2,mean=groupmeans[3,],sigma=diag(groupsd[3,2:3]))
likes <-cbind(center1like,center2like,center3like)
matplot(likes)
##redo group assignment
group <- apply(likes,1,which.max)
print(groupmeans)
print(groupsd)
print(table(truth,group))
}
library(knitr)
library(rmdformats)
## Global options
options(max.print="75")
opts_chunk$set(echo=TRUE,
cache=TRUE,
prompt=FALSE,
tidy=TRUE,
comment=NA,
message=FALSE,
warning=FALSE)
opts_knit$set(width=75)
knitr::opts_chunk$set(echo = TRUE)
set.seed(100)
centers <- matrix(runif(6),ncol=3)
par(mfrow=c(1,2))
data1 <- matrix(c(rnorm(200,mean=centers[,1],sd=.02),
rnorm(200,mean=centers[,2],sd=.02),
rnorm(200,mean=centers[,3],sd=.02)),
ncol=2,byrow=T)
colnames(data1) <- c("V1","V2")
plot(data1,col=rep(c("red","darkgreen","blue"),each=100))
points(t(centers),pch=16,cex=2,col="black")
data2 <- matrix(c(rnorm(200,mean=centers[,1],sd=.1),
rnorm(200,mean=centers[,2],sd=.1),
rnorm(200,mean=centers[,3],sd=.1)),ncol=2,byrow=T)
colnames(data2) <- c("V1","V2")
plot(data2,col=rep(c("red","darkgreen","blue"),each=100))
points(t(centers),pch=16,cex=2,col=c("red","darkgreen","blue"))
library(mvtnorm)
truth <- rep(1:3,each=100)
center1like <- dmvnorm(data1,mean=centers[,1],sigma=diag(rep(.02,2)))
center2like <- dmvnorm(data1,mean=centers[,2],sigma=diag(rep(.02,2)))
center3like <- dmvnorm(data1,mean=centers[,3],sigma=diag(rep(.02,2)))
likes <-cbind(center1like,center2like,center3like)
group <- apply(likes,1,which.max)
matplot(cbind(center1like,center2like,center3like), ylab="Likelihood of each group")
library(ggplot2)
data.frame(data1,original=rep(c("1","2","3") , each=100)) |>
ggplot(aes(x=V1,y=V2,color=factor(group),shape=original)) + geom_point(size=3) + geom_point(data=as.data.frame(t(centers)),aes(x=V1,y=V2),color="black",size=5,shape=4) +
theme_bw()
table(truth,group)
center1like <- dmvnorm(data2,mean=centers[,1],sigma=diag(rep(.07,2)))
center2like <- dmvnorm(data2,mean=centers[,2],sigma=diag(rep(.07,2)))
center3like <- dmvnorm(data2,mean=centers[,3],sigma=diag(rep(.07,2)))
likes <-cbind(center1like,center2like,center3like)
matplot(likes)
group <- apply(likes,1,which.max)
table(truth,group)
library(ggplot2)
data.frame(data2,original=rep(c("1","2","3") , each=100)) |>
ggplot(aes(x=V1,y=V2,color=factor(group),shape=original)) + geom_point(size=3) + geom_point(data=as.data.frame(t(centers)),aes(x=V1,y=V2),color="black",size=5,shape=4) +
theme_bw()
#plot(data2,col=c("red","darkgreen","blue")[group],pch=rep(c(1,16,11),each=100))
#points(t(centers),pch=16,cex=2,col=c("red","darkgreen","blue"))
group <- sample(1:3,300,replace=T)
##Repeat the following until it converges:
par(mfrow=c(1,2))
for(i in 1:6)
{
##recompute centers and spread based on these groupings (maximum-likelihood estimation)
groupmeans<- aggregate(data2,list(group),mean)[,-1]
groupsd <- aggregate(data2,list(group),sd)
plot(data2,col=group,main="Current configuration")
points(groupmeans,pch=16,cex=2,col=1:3)
##estimate likelihood for each grouping:
center1like <- dmvnorm(data2,mean=unlist(groupmeans[1,]),sigma=diag(groupsd[1,2:3]))
center2like <- dmvnorm(data2,mean=unlist(groupmeans[2,]),sigma=diag(groupsd[2,2:3]))
center3like <- dmvnorm(data2,mean=unlist(groupmeans[3,]),sigma=diag(groupsd[3,2:3]))
#center2like <- dmvnorm(data2,mean=groupmeans[2,],sigma=diag(groupsd[2,2:3]))
#center3like <- dmvnorm(data2,mean=groupmeans[3,],sigma=diag(groupsd[3,2:3]))
likes <-cbind(center1like,center2like,center3like)
matplot(likes)
##redo group assignment
group <- apply(likes,1,which.max)
print(groupmeans)
print(groupsd)
print(table(truth,group))
}
##These are the true centers
print(centers)
groupsd
groupmeans
centers
library(mclust)
model1 <- Mclust(data2)
summary(model1)
plot(model1,what=c("classification"))
plot(model1,what="BIC")
model1$parameters
model2 <- Mclust(data2, modelNames = "VVI")
summary(model2)
plot(model2,what=c("classification"))
grid()
model2$parameters
table(truth,model1$classification)
table(truth,model2$classification)
library(MASS)
d_dist <- read.csv("plaindist.csv")
d_dist<- d_dist[,-1]
colnames(d_dist) <- LETTERS
rownames(d_dist) <-LETTERS
x <- isoMDS(as.dist(d_dist),k=3)
l <- Mclust(x$points)
plot(l,what="BIC")
plot(l,what="classification")
?plot.Mclust
plot(x$points[,1],x$points[,2],type="n")
text(x$points[,1],x$points[,2],LETTERS,col=l5$classification)
data <- read.csv("bigfive.csv")
dat.vals <- data[,-1]##remove subject code
qtype <- c("E","A","C","N","O", "E","A","C","N","O",
"E","A","C","N","O", "E","A","C","N","O",
"E","A","C","N","O", "E","A","C","N","O",
"E","A","C","N","O", "E","A","C","N","O",
"O","A","C","O")
valence <- c(1,-1,1,1,1,  -1,1,-1,-1,1,
1,-1,1,1,1,  1,1,-1,1,1,
-1,1,-1,-1,1,  1,-1,1,1,1,
-1,1,1,-1,-1,  1,-1,1,1,1,
-1,1,-1,1)
add <- c(6,0,0)[valence+2]
tmp <- dat.vals
reversed <-t(t(tmp)*valence + add)
##reverse code questions:
bytype <- reversed[,order(qtype)]
key <- sort(qtype)
colnames(bytype) <- paste(key,1:44,sep="")
##we may need to impute missing dat.  If so, a value of 3 is a quick
##reasonable guess:
bytype[is.na(bytype)] <- 3
hh <- hc(data2,modelName="EII")
hclass(hh)[1:10,1:10]
data <- read.csv("bigfive.csv")
dat.vals <- data[,-1]##remove subject code
qtype <- c("E","A","C","N","O", "E","A","C","N","O",
"E","A","C","N","O", "E","A","C","N","O",
"E","A","C","N","O", "E","A","C","N","O",
"E","A","C","N","O", "E","A","C","N","O",
"O","A","C","O")
valence <- c(1,-1,1,1,1,  -1,1,-1,-1,1,
1,-1,1,1,1,  1,1,-1,1,1,
-1,1,-1,-1,1,  1,-1,1,1,1,
-1,1,1,-1,-1,  1,-1,1,1,1,
-1,1,-1,1)
add <- c(6,0,0)[valence+2]
tmp <- dat.vals
reversed <-t(t(tmp)*valence + add)
##reverse code questions:
bytype <- reversed[,order(qtype)]
key <- sort(qtype)
colnames(bytype) <- paste(key,1:44,sep="")
##we may need to impute missing dat.  If so, a value of 3 is a quick
##reasonable guess:
bytype[is.na(bytype)] <- 3
data <- read.csv("bigfive.csv")
dat.vals <- data[,-1]##remove subject code
qtype <- c("E","A","C","N","O", "E","A","C","N","O",
"E","A","C","N","O", "E","A","C","N","O",
"E","A","C","N","O", "E","A","C","N","O",
"E","A","C","N","O", "E","A","C","N","O",
"O","A","C","O")
valence <- c(1,-1,1,1,1,  -1,1,-1,-1,1,
1,-1,1,1,1,  1,1,-1,1,1,
-1,1,-1,-1,1,  1,-1,1,1,1,
-1,1,1,-1,-1,  1,-1,1,1,1,
-1,1,-1,1)
add <- c(6,0,0)[valence+2]
tmp <- dat.vals
reversed <-t(t(tmp)*valence + add)
##reverse code questions:
bytype <- reversed[,order(qtype)]
key <- sort(qtype)
colnames(bytype) <- paste(key,1:44,sep="")
##we may need to impute missing dat.  If so, a value of 3 is a quick
##reasonable guess:
bytype[is.na(bytype)] <- 3
hh <- hc(data2,modelName="EII")
hclass(hh)[1:10,1:10]
mc <-Mclust(data2)
hc <- hclass(hh)
par(mfrow=c(2,2))
plot(data2,col=hc[,1])
plot(data2,col=hc[,2])
plot(data2,col=hc[,4])
plot(data2,col=hc[,5])
plot(data2,col=hc[,10])
mc <-Mclust(data2)
hc <- hclass(hh)
par(mfrow=c(2,2))
plot(data2,col=hc[,1])
plot(data2,col=hc[,2])
plot(data2,col=hc[,5])
plot(data2,col=hc[,10])
mclustBIC(hh)
mclustBIC(hc)
hh <- hc(x$points,modelName="EII")
classes <- hclass(hh)
print(hh)
plot(x$points[,1:2],cex=4,col=classes[,8])
text(x$points[,1],x$points[,2],LETTERS)
knitr::kable(classes)
library(flexmix)
data.raw <- read.csv("misenate.csv")
key <- read.csv("misenate-key.csv",header=F)
keep<- !is.na(rowMeans(data.raw[,-(1:2)]))
data <- data.raw[keep==TRUE,]
party <- data$Party
votes <- as.matrix(data[,-(1:2)])
##model with a single group is easy;
model1 <- flexmix(votes~1,k=1, model=FLXMCmvbinary())
model2 <- flexmix(votes~1,k=2, model=FLXMCmvbinary())
table(party,clusters(model2))
model4 <- flexmix(votes~1,k=4,model=FLXMCmvbinary())
table(party,clusters(model4))
parameters(model4)
matplot(parameters(model4),type="o",main="Voting by block on each issue")
#set.seed(100)
modelsx <- stepFlexmix(votes~1,k=1:6,model=FLXMCmvbinary(),nrep=10,drop=FALSE)
modelsx
plot(modelsx)
bestmodel <- getModel(modelsx,"BIC")
bestmodel
summary(bestmodel)
model2 <- getModel(modelsx,5)
parameters(model2)
plot(bestmodel)
parameters(bestmodel)
clusters(bestmodel)
table(party,clusters(bestmodel))
bestmodel <- getModel(modelsx,4)
bestmodel
summary(bestmodel)
plot(bestmodel)
parameters(bestmodel)
clusters(bestmodel)
table(party,clusters(bestmodel))
matplot(parameters(bestmodel),1:54,type="o",ylab="Issue",xlab="Model parameter value")
grid()
#set.seed(101)
tab <- table(party,clusters(bestmodel))
gparty <-c("D","R")[apply(tab,2,which.max)]
p <- parameters(bestmodel)
grp <- kmeans(p,centers=7)
##find the mean positive vote probability across cluster.
#grpord <- rank(aggregate(rowMeans(p),list(grp$cluster),mean)$x)
ord <- order(grp$cluster)#(grpord[grp$cluster])
par(mar=c(3,25,2,1),las=1)
matplot(p[ord,],1:54,pch=gparty,type="o",yaxt="n",ylab="",xlab="Agreement with rater on bill")
grid()
axis(2,1:54,paste(paste(key$V1,key$V2)[ord],sort(grp$cluster)),cex.axis=.75)
data2 <- matrix(c(rnorm(200,mean=centers[,1],sd=.1),
rnorm(200,mean=centers[,2],sd=1)),ncol=2,byrow=T)
colnames(data2) <- c("V1","V2")
plot(data2,col=rep(c("red","darkgreen"),each=100))
points(t(centers),pch=16,cex=2,col=c("red","darkgreen"))
modelx <- Mclust(data2)
summary(modelx)
plot(modelx,what=c("classification"))
table(rep(1:2,each=100),modelx$classification)
k <- kmeans(data2,centers=2)
plot(data2,col=c("red","darkgreen")[k$cluster])
table(rep(1:2,each=100),k$cluster)
plot(modelx,"BIC")
modelEEE <- Mclust(data2,modelNames=c("EEE","EII","EVE"))
plot(modelEEE,what="classification")
simdat <- read.csv("kuennapas.csv")[,-1]
row.names(simdat) <- colnames(simdat)
simdat <- as.matrix(simdat)
image(1:28,1:28,simdat,xaxt="n",yaxt="n",xlab="Letter",ylab="Letter")
axis(1,1:28,rownames(simdat))
axis(2,1:28,rownames(simdat))
