Prof. Andy Catlin IS 643 - Special Topics: Recommender Systems Department of Data Analytics, City University of New York
While the models use for recommendations do as is expected i.e. make recommendation the accuracy and precision of those recommendation have to be evaluated to see if they make sense either at a user -user or item-item filtering. The accuracy is measured with RMSE, MSE and MAE. Since the measure as calculated differently and apply different weightings I would choose between the RMSE or MAE.I also found that using k-fold cross validation is faster than splitting the data set manually.
## [1] 3.587565
## 1 2 3 4 5 6 7
## 1 0.0000000 0.9605820 0.8339504 0.9192637 0.9326136 0.9541710 0.9446653
## 2 0.9605820 0.0000000 0.9268716 0.9370341 0.9848027 0.9543931 0.9670869
## 3 0.8339504 0.9268716 0.0000000 0.9130323 1.0000000 0.8668857 0.8738971
## 4 0.9192637 0.9370341 0.9130323 0.0000000 0.9946918 0.9238226 0.8823323
## 5 0.9326136 0.9848027 1.0000000 0.9946918 0.0000000 0.9336269 0.9081632
## 6 0.9541710 0.9543931 0.8668857 0.9238226 0.9336269 0.0000000 0.9605997
## 7 0.9446653 0.9670869 0.8738971 0.8823323 0.9081632 0.9605997 0.0000000
## 8 0.9775049 0.9586588 0.8958898 0.9765327 0.9412276 0.9775950 0.9561888
## 9 0.9764039 0.9400556 0.9191450 0.9938837 0.8809189 0.9427809 0.9394858
## 10 0.9683044 0.9826137 0.9024436 0.9691166 0.9401144 0.9784868 0.9780770
## 8 9 10
## 1 0.9775049 0.9764039 0.9683044
## 2 0.9586588 0.9400556 0.9826137
## 3 0.8958898 0.9191450 0.9024436
## 4 0.9765327 0.9938837 0.9691166
## 5 0.9412276 0.8809189 0.9401144
## 6 0.9775950 0.9427809 0.9784868
## 7 0.9561888 0.9394858 0.9780770
## 8 0.0000000 0.8990017 0.9752306
## 9 0.8990017 0.0000000 0.9880545
## 10 0.9752306 0.9880545 0.0000000
## 1 2 3 4 5 6 7
## 1 0.0000000 0.9605820 0.8339504 0.9192637 0.9326136 0.9541710 0.9446653
## 2 0.9605820 0.0000000 0.9268716 0.9370341 0.9848027 0.9543931 0.9670869
## 3 0.8339504 0.9268716 0.0000000 0.9130323 1.0000000 0.8668857 0.8738971
## 4 0.9192637 0.9370341 0.9130323 0.0000000 0.9946918 0.9238226 0.8823323
## 5 0.9326136 0.9848027 1.0000000 0.9946918 0.0000000 0.9336269 0.9081632
## 6 0.9541710 0.9543931 0.8668857 0.9238226 0.9336269 0.0000000 0.9605997
## 8 9 10
## 1 0.9775049 0.9764039 0.9683044
## 2 0.9586588 0.9400556 0.9826137
## 3 0.8958898 0.9191450 0.9024436
## 4 0.9765327 0.9938837 0.9691166
## 5 0.9412276 0.8809189 0.9401144
## 6 0.9775950 0.9427809 0.9784868
## Toy Story (1995)
## Toy Story (1995) 0.0000000
## GoldenEye (1995) 0.9487374
## Four Rooms (1995) 0.9132997
## Get Shorty (1995) 0.9429069
## Copycat (1995) 0.9613638
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 0.9551194
## Twelve Monkeys (1995) 0.9489155
## Babe (1995) 0.9600459
## Dead Man Walking (1995) 0.9387445
## Richard III (1995) 0.9430394
## GoldenEye (1995)
## Toy Story (1995) 0.9487374
## GoldenEye (1995) 0.0000000
## Four Rooms (1995) 0.9088797
## Get Shorty (1995) 0.9394926
## Copycat (1995) 0.9426876
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 0.9550903
## Twelve Monkeys (1995) 0.9411770
## Babe (1995) 0.9499076
## Dead Man Walking (1995) 0.9145017
## Richard III (1995) 0.9389799
## Four Rooms (1995)
## Toy Story (1995) 0.9132997
## GoldenEye (1995) 0.9088797
## Four Rooms (1995) 0.0000000
## Get Shorty (1995) 0.8991940
## Copycat (1995) 0.9424719
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 0.9683641
## Twelve Monkeys (1995) 0.9208737
## Babe (1995) 0.8787096
## Dead Man Walking (1995) 0.9084892
## Richard III (1995) 0.9269418
## Get Shorty (1995)
## Toy Story (1995) 0.9429069
## GoldenEye (1995) 0.9394926
## Four Rooms (1995) 0.8991940
## Get Shorty (1995) 0.0000000
## Copycat (1995) 0.8919936
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 0.9190369
## Twelve Monkeys (1995) 0.9484601
## Babe (1995) 0.9539981
## Dead Man Walking (1995) 0.9497018
## Richard III (1995) 0.9582736
## Copycat (1995)
## Toy Story (1995) 0.9613638
## GoldenEye (1995) 0.9426876
## Four Rooms (1995) 0.9424719
## Get Shorty (1995) 0.8919936
## Copycat (1995) 0.0000000
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 0.9962406
## Twelve Monkeys (1995) 0.9359823
## Babe (1995) 0.9452349
## Dead Man Walking (1995) 0.9340369
## Richard III (1995) 0.9041944
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995)
## Toy Story (1995) 0.9551194
## GoldenEye (1995) 0.9550903
## Four Rooms (1995) 0.9683641
## Get Shorty (1995) 0.9190369
## Copycat (1995) 0.9962406
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 0.0000000
## Twelve Monkeys (1995) 0.9072989
## Babe (1995) 0.8613908
## Dead Man Walking (1995) 0.9517965
## Richard III (1995) 0.9405701
## Twelve Monkeys (1995)
## Toy Story (1995) 0.9489155
## GoldenEye (1995) 0.9411770
## Four Rooms (1995) 0.9208737
## Get Shorty (1995) 0.9484601
## Copycat (1995) 0.9359823
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 0.9072989
## Twelve Monkeys (1995) 0.0000000
## Babe (1995) 0.9595148
## Dead Man Walking (1995) 0.9503334
## Richard III (1995) 0.9494393
## Babe (1995)
## Toy Story (1995) 0.9600459
## GoldenEye (1995) 0.9499076
## Four Rooms (1995) 0.8787096
## Get Shorty (1995) 0.9539981
## Copycat (1995) 0.9452349
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 0.8613908
## Twelve Monkeys (1995) 0.9595148
## Babe (1995) 0.0000000
## Dead Man Walking (1995) 0.9611934
## Richard III (1995) 0.9681040
## Dead Man Walking (1995)
## Toy Story (1995) 0.9387445
## GoldenEye (1995) 0.9145017
## Four Rooms (1995) 0.9084892
## Get Shorty (1995) 0.9497018
## Copycat (1995) 0.9340369
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 0.9517965
## Twelve Monkeys (1995) 0.9503334
## Babe (1995) 0.9611934
## Dead Man Walking (1995) 0.0000000
## Richard III (1995) 0.9476115
## Richard III (1995)
## Toy Story (1995) 0.9430394
## GoldenEye (1995) 0.9389799
## Four Rooms (1995) 0.9269418
## Get Shorty (1995) 0.9582736
## Copycat (1995) 0.9041944
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 0.9405701
## Twelve Monkeys (1995) 0.9494393
## Babe (1995) 0.9681040
## Dead Man Walking (1995) 0.9476115
## Richard III (1995) 0.0000000
## Toy Story (1995)
## Toy Story (1995) 0.0000000
## GoldenEye (1995) 0.9487374
## Four Rooms (1995) 0.9132997
## Get Shorty (1995) 0.9429069
## Copycat (1995) 0.9613638
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 0.9551194
## GoldenEye (1995)
## Toy Story (1995) 0.9487374
## GoldenEye (1995) 0.0000000
## Four Rooms (1995) 0.9088797
## Get Shorty (1995) 0.9394926
## Copycat (1995) 0.9426876
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 0.9550903
## Four Rooms (1995)
## Toy Story (1995) 0.9132997
## GoldenEye (1995) 0.9088797
## Four Rooms (1995) 0.0000000
## Get Shorty (1995) 0.8991940
## Copycat (1995) 0.9424719
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 0.9683641
## Get Shorty (1995)
## Toy Story (1995) 0.9429069
## GoldenEye (1995) 0.9394926
## Four Rooms (1995) 0.8991940
## Get Shorty (1995) 0.0000000
## Copycat (1995) 0.8919936
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 0.9190369
## Copycat (1995)
## Toy Story (1995) 0.9613638
## GoldenEye (1995) 0.9426876
## Four Rooms (1995) 0.9424719
## Get Shorty (1995) 0.8919936
## Copycat (1995) 0.0000000
## Shanghai Triad (Yao a yao yao dao waipo qiao) (1995) 0.9962406
#Subsetting the dataset
ratings_movies <- MovieLense[ rowCounts( MovieLense) > 50, colCounts( MovieLense) > 100]
which_train<-sample(x=c(TRUE,FALSE),size = nrow(ratings_movies),replace = TRUE,prob = c(.8,.2))
rec_data_train<-ratings_movies[which_train,]
rec_data_test<-ratings_movies[!which_train,]
#build recommender Model
rec_model<-Recommender(data=rec_data_train,method='IBCF')
#predict 10 movies for the users
n_rec<-10
rec_predict<-predict(rec_model,newdata=rec_data_test,n=n_rec)
rec_predict
## Recommendations as 'topNList' with n = 10 for 103 users.
rec_matrix<-sapply(rec_predict@items,
function(x){
colnames(rec_data_test)[x]
})
rec_matrix[,1:10]
## 13
## [1,] "Men in Black (1997)"
## [2,] "Con Air (1997)"
## [3,] "Lost World: Jurassic Park, The (1997)"
## [4,] "Time to Kill, A (1996)"
## [5,] "Firm, The (1993)"
## [6,] "Fly Away Home (1996)"
## [7,] "Phenomenon (1996)"
## [8,] "Welcome to the Dollhouse (1995)"
## [9,] "Crash (1996)"
## [10,] "Fifth Element, The (1997)"
## 14 21
## [1,] "Babe (1995)" "Rock, The (1996)"
## [2,] "Blade Runner (1982)" "Cold Comfort Farm (1995)"
## [3,] "Sting, The (1973)" "Quiz Show (1994)"
## [4,] "Nikita (La Femme Nikita) (1990)" "Time to Kill, A (1996)"
## [5,] "Edge, The (1997)" "In the Line of Fire (1993)"
## [6,] "Great Escape, The (1963)" "Welcome to the Dollhouse (1995)"
## [7,] "Dante's Peak (1997)" "Miracle on 34th Street (1994)"
## [8,] "Phenomenon (1996)" "Sex, Lies, and Videotape (1989)"
## [9,] "Pretty Woman (1990)" "Fly Away Home (1996)"
## [10,] "Clear and Present Danger (1994)" "Little Women (1994)"
## 24
## [1,] "Rumble in the Bronx (1995)"
## [2,] "Apollo 13 (1995)"
## [3,] "Batman Forever (1995)"
## [4,] "Ed Wood (1994)"
## [5,] "Terminator 2: Judgment Day (1991)"
## [6,] "Truth About Cats & Dogs, The (1996)"
## [7,] "Cold Comfort Farm (1995)"
## [8,] "Twister (1996)"
## [9,] "Swingers (1996)"
## [10,] "Right Stuff, The (1983)"
## 38
## [1,] "Twelve Monkeys (1995)"
## [2,] "Seven (Se7en) (1995)"
## [3,] "Crow, The (1994)"
## [4,] "Mystery Science Theater 3000: The Movie (1996)"
## [5,] "Monty Python and the Holy Grail (1974)"
## [6,] "Cinema Paradiso (1988)"
## [7,] "Field of Dreams (1989)"
## [8,] "Star Trek IV: The Voyage Home (1986)"
## [9,] "Raising Arizona (1987)"
## [10,] "Starship Troopers (1997)"
## 48
## [1,] "Mighty Aphrodite (1995)"
## [2,] "Cold Comfort Farm (1995)"
## [3,] "Contact (1997)"
## [4,] "As Good As It Gets (1997)"
## [5,] "Everyone Says I Love You (1996)"
## [6,] "Boogie Nights (1997)"
## [7,] "Mrs. Doubtfire (1993)"
## [8,] "African Queen, The (1951)"
## [9,] "Magnificent Seven, The (1954)"
## [10,] "Crying Game, The (1992)"
## 59
## [1,] "Sneakers (1992)"
## [2,] "One Fine Day (1996)"
## [3,] "Lost World: Jurassic Park, The (1997)"
## [4,] "Welcome to the Dollhouse (1995)"
## [5,] "Cable Guy, The (1996)"
## [6,] "Hunchback of Notre Dame, The (1996)"
## [7,] "Lone Star (1996)"
## [8,] "Stargate (1994)"
## [9,] "Abyss, The (1989)"
## [10,] "101 Dalmatians (1996)"
## 60
## [1,] "Manchurian Candidate, The (1962)"
## [2,] "Volcano (1997)"
## [3,] "Ghost and the Darkness, The (1996)"
## [4,] "Monty Python's Life of Brian (1979)"
## [5,] "Nightmare on Elm Street, A (1984)"
## [6,] "Young Guns (1988)"
## [7,] "Batman Forever (1995)"
## [8,] "Starship Troopers (1997)"
## [9,] "Stargate (1994)"
## [10,] "Ghost (1990)"
## 72
## [1,] "Multiplicity (1996)"
## [2,] "Cable Guy, The (1996)"
## [3,] "Crying Game, The (1992)"
## [4,] "George of the Jungle (1997)"
## [5,] "Father of the Bride Part II (1995)"
## [6,] "Mr. Smith Goes to Washington (1939)"
## [7,] "Pink Floyd - The Wall (1982)"
## [8,] "It's a Wonderful Life (1946)"
## [9,] "Nutty Professor, The (1996)"
## [10,] "Pinocchio (1940)"
## 77
## [1,] "Professional, The (1994)"
## [2,] "Much Ado About Nothing (1993)"
## [3,] "Aladdin (1992)"
## [4,] "Room with a View, A (1986)"
## [5,] "When Harry Met Sally... (1989)"
## [6,] "Absolute Power (1997)"
## [7,] "Face/Off (1997)"
## [8,] "Fly Away Home (1996)"
## [9,] "Like Water For Chocolate (Como agua para chocolate) (1992)"
## [10,] "Philadelphia Story, The (1940)"
n_fold <- 10
items_to_keep <- 15
rating_threshold <- 3
model_to_evaluate <- "IBCF"
model_parameters <- NULL
eval_sets <- evaluationScheme( data = ratings_movies,
method = "cross-validation"
, k = n_fold, given = items_to_keep
, goodRating = rating_threshold)
eval_prediction <- predict(object = rec_model,
newdata = getData( eval_sets, "known"),
n = 10, type = "ratings")
eval_accuracy <- calcPredictionAccuracy(
x = eval_prediction,
data = getData(eval_sets, "unknown"),
byUser = FALSE,
given = items_to_recommend)
head( eval_accuracy)
## RMSE MSE MAE
## 1.485621 2.207070 1.104279
eval_recommender <- Recommender(data = getData(eval_sets, "train"),
method = model_to_evaluate,
parameter = model_parameters)
results <- evaluate(x = eval_sets,
method = model_to_evaluate,
n = seq(10, 100, 10))
## IBCF run fold/sample [model time/prediction time]
## 1 [0.77sec/0.1sec]
## 2 [0.55sec/0.04sec]
## 3 [0.61sec/0.01sec]
## 4 [0.61sec/0.03sec]
## 5 [1.01sec/0.07sec]
## 6 [0.68sec/0.03sec]
## 7 [0.75sec/0.03sec]
## 8 [0.5sec/0.04sec]
## 9 [0.55sec/0.03sec]
## 10 [0.6sec/0.03sec]
head( getConfusionMatrix( results)[[ 1]])
## TP FP FN TN precision recall TPR
## 10 3.053571 6.946429 74.48214 232.5179 0.3053571 0.04059486 0.04059486
## 20 5.946429 14.053571 71.58929 225.4107 0.2973214 0.08053030 0.08053030
## 30 8.875000 21.125000 68.66071 218.3393 0.2958333 0.11826206 0.11826206
## 40 11.446429 28.553571 66.08929 210.9107 0.2861607 0.14945523 0.14945523
## 50 13.821429 36.107143 63.71429 203.3571 0.2767081 0.17978363 0.17978363
## 60 15.964286 43.785714 61.57143 195.6786 0.2668866 0.20719043 0.20719043
## FPR
## 10 0.02874900
## 20 0.05852716
## 30 0.08769312
## 40 0.11838159
## 50 0.15034333
## 60 0.18281125
table_wide <- reshape( data =table_Users,#convert table to wide
direction = "wide",
idvar ="UserID",
timevar = "MovieID",
v.names = "Rating" )
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : some constant variables (Timestamp) are really varying
###Item Based Collaborative Filtering
head(table_wide[, 1: 10])
## UserID Timestamp Rating.1193 Rating.661 Rating.914 Rating.3408
## 1 1 12 5 3 3 4
## 54 2 65 5 NA NA NA
## 183 3 194 NA NA NA NA
## 234 4 245 NA NA NA NA
## 255 5 266 NA NA NA 3
## 453 6 464 NA NA 5 5
## Rating.2355 Rating.1197 Rating.1287 Rating.2804
## 1 5 3 5 5
## 54 NA NA NA NA
## 183 5 5 NA NA
## 234 NA NA NA NA
## 255 5 NA NA NA
## 453 NA NA NA NA
W_movies<-table_wide
W_movies <- (table_wide[,!(names(table_wide) %in% c("UserID"))])
W_movies[is.na(W_movies)] = 0
head(W_movies[, 1:10])
## Timestamp Rating.1193 Rating.661 Rating.914 Rating.3408 Rating.2355
## 1 12 5 3 3 4 5
## 54 65 5 0 0 0 0
## 183 194 0 0 0 0 5
## 234 245 0 0 0 0 0
## 255 266 0 0 0 3 5
## 453 464 0 0 5 5 0
## Rating.1197 Rating.1287 Rating.2804 Rating.594
## 1 3 5 5 4
## 54 0 0 0 0
## 183 5 0 0 0
## 234 0 0 0 0
## 255 0 0 0 0
## 453 0 0 0 0
# Function to calculate cosine Similarity
Sim_Cos <- function(a,b)
{
cos_ine <- sum(a*b) / (sqrt(sum(a*a)) * sqrt(sum(b*b)))
return(cos_ine)
}
#Fill table with item rating
W_movies_sim <- matrix(NA, nrow=ncol(W_movies)
,ncol=ncol(W_movies)
,dimnames=list(colnames(W_movies)
,colnames(W_movies)))
for(i in 1:ncol(W_movies)) {
# Loop through the columns
for(j in 1:ncol(W_movies)) {
# Fill matrix with cosine similarities
W_movies_sim[i,j] <- Sim_Cos(as.matrix(W_movies[i]),as.matrix(W_movies[j]))
}
}
image(as.matrix(W_movies_sim),main="Similarity of Items")
W_movies_sim <- as.data.frame(W_movies_sim)
W_movies_n <- matrix(NA, nrow=ncol(W_movies_sim),ncol=5,dimnames=list(colnames(W_movies_sim)))
for(i in 1:ncol(W_movies))
{
W_movies_n[i,] <- (t(head(n=5,
rownames(W_movies_sim
[order(W_movies_sim[,i]
,decreasing=TRUE),][i]))))
}
#convert to rating Matrix
ratings_movies <- as(W_movies_sim, "realRatingMatrix")
ratings_movies
## 521 x 270 rating matrix of class 'realRatingMatrix' with 522 ratings.
#Splitting the Data set into train and test
which_train<-sample(x=c(TRUE,FALSE),size = nrow(ratings_movies),replace = TRUE,prob = c(.8,.2))
rec_data_train<-ratings_movies[which_train,]
rec_data_test<-ratings_movies[!which_train,]
#using the training dataset to create recommender model
rec <- Recommender(rec_data_train, method = "IBCF")
#predict recommended Movie for users on test dataset
rec_pred <- predict(rec, rec_data_test, n=10)
rec_pred
## Recommendations as 'topNList' with n = 10 for 121 users.
pre<-sapply(rec_pred@items,
function(x){
colnames(ratings_movies)[x]
})
pre
## $`0.0113267275681244`
## character(0)
##
## $`0.046352454355709`
## character(0)
##
## $`0.0986296585162831`
## character(0)
##
## $`0.105972972699387`
## character(0)
##
## $`0.107939451445173`
## character(0)
##
## $`0.112456835409752`
## character(0)
##
## $`0.118028963173405`
## character(0)
##
## $`0.122851429777349`
## character(0)
##
## $`0.148728426356123`
## character(0)
##
## $`0.149477952429801`
## character(0)
##
## $`0.156610779437004`
## character(0)
##
## $`0.160075250492499`
## character(0)
##
## $`0.163918613399546`
## character(0)
##
## $`0.168345810492017`
## character(0)
##
## $`0.169671945936077`
## character(0)
##
## $`0.18211701967576`
## character(0)
##
## $`0.193467350518731`
## character(0)
##
## $`0.19387556690047`
## character(0)
##
## $`0.204711486196333`
## character(0)
##
## $`0.205502081866601`
## character(0)
##
## $`0.207915852126973`
## character(0)
##
## $`0.208952358599355`
## character(0)
##
## $`0.209159564210644`
## character(0)
##
## $`0.212185658478326`
## character(0)
##
## $`0.215368933897561`
## character(0)
##
## $`0.217348763170466`
## character(0)
##
## $`0.21822005537603`
## character(0)
##
## $`0.219000382114917`
## character(0)
##
## $`0.219601741569622`
## character(0)
##
## $`0.227249034598172`
## character(0)
##
## $`0.228137718956745`
## character(0)
##
## $`0.228597257538363`
## character(0)
##
## $`0.231134945328618`
## character(0)
##
## $`0.232378999390064`
## character(0)
##
## $`0.233574191111548`
## character(0)
##
## $`0.233896518647658`
## character(0)
##
## $`0.238297675254607`
## character(0)
##
## $`0.242290029774689`
## character(0)
##
## $`0.24729963361925`
## character(0)
##
## $`0.258085897049859`
## character(0)
##
## $`0.265857722213741`
## character(0)
##
## $`0.26844041659147`
## character(0)
##
## $`0.268983641140874`
## character(0)
##
## $`0.269354680461069`
## character(0)
##
## $`0.270412551387929`
## character(0)
##
## $`0.278678591109201`
## character(0)
##
## $`0.29056607303551`
## character(0)
##
## $`0.297283034326465`
## character(0)
##
## $`0.299875754025306`
## character(0)
##
## $`0.300027282199484`
## character(0)
##
## $`0.30320778413133`
## character(0)
##
## $`0.306080643027735`
## character(0)
##
## $`0.306187971048113`
## character(0)
##
## $`0.306269062579458`
## character(0)
##
## $`0.315586401534462`
## character(0)
##
## $`0.318750133020688`
## character(0)
##
## $`0.322844729104474`
## character(0)
##
## $`0.331553345248235`
## character(0)
##
## $`0.332174953978052`
## character(0)
##
## $`0.332267181641785`
## character(0)
##
## $`0.332857888066388`
## character(0)
##
## $`0.356795683751536`
## character(0)
##
## $`0.372193461505738`
## character(0)
##
## $`0.384228118317613`
## character(0)
##
## $`0.38894553661996`
## character(0)
##
## $`0.389863498142156`
## character(0)
##
## $`0.395398387352179`
## character(0)
##
## $`0.399026847060118`
## character(0)
##
## $`0.399181192489625`
## character(0)
##
## $`0.401080088040019`
## character(0)
##
## $`0.404939223427807`
## character(0)
##
## $`0.404955258670905`
## character(0)
##
## $`0.40625517421211`
## character(0)
##
## $`0.406466028571279`
## character(0)
##
## $`0.414698356193079`
## character(0)
##
## $`0.41523438799323`
## character(0)
##
## $`0.415841240233906`
## character(0)
##
## $`0.416012121313744`
## character(0)
##
## $`0.419008389054128`
## character(0)
##
## $`0.419103669553709`
## character(0)
##
## $`0.424708353787647`
## character(0)
##
## $`0.428487454576841`
## character(0)
##
## $`0.436239757683357`
## character(0)
##
## $`0.437172530416781`
## character(0)
##
## $`0.439680010465343`
## character(0)
##
## $`0.448811360957152`
## character(0)
##
## $`0.451486684947547`
## character(0)
##
## $`0.462702882728254`
## character(0)
##
## $`0.463548192165231`
## character(0)
##
## $`0.467125183483087`
## character(0)
##
## $`0.468851194134537`
## character(0)
##
## $`0.471993450631103`
## character(0)
##
## $`0.476129158338028`
## character(0)
##
## $`0.479116641152919`
## character(0)
##
## $`0.485042704782015`
## character(0)
##
## $`0.489815202849059`
## character(0)
##
## $`0.493636213153581`
## character(0)
##
## $`0.497242638060713`
## character(0)
##
## $`0.499306215920241`
## character(0)
##
## $`0.499916641835373`
## character(0)
##
## $`0.501272996974356`
## character(0)
##
## $`0.50504978210278`
## character(0)
##
## $`0.505997918449279`
## character(0)
##
## $`0.515559168591166`
## character(0)
##
## $`0.517453950379684`
## character(0)
##
## $`0.518066042661292`
## character(0)
##
## $`0.51862688485472`
## character(0)
##
## $`0.525203159094338`
## character(0)
##
## $`0.529759761228537`
## character(0)
##
## $`0.532102150706667`
## character(0)
##
## $`0.53487004939629`
## character(0)
##
## $`0.548857375340069`
## character(0)
##
## $`0.54906677584502`
## character(0)
##
## $`0.558323480947938`
## character(0)
##
## $`0.566376600366737`
## character(0)
##
## $`0.567210758062445`
## character(0)
##
## $`0.570389423793479`
## character(0)
##
## $`0.626663204544742`
## character(0)
##
## $`0.632425242177905`
## character(0)
##
## $`0.667189890594394`
## character(0)
##
## $`0.671488651151846`
## character(0)