Monday, April 1, 2024

LIS 4317 Visual Analytics - Module 12 Assignment

For this week's assignment, we were tasked with creating a social network visualization. To create mine, I used RStudio and included the following R packages:

As for the dataset selection, I must admit it was a bit tricky at first but then I located this interesting resource on GitHub which linked me to a plethora of different social network analysis datasets.

Here's the resource: awesome-network-analysis

From this list, I decided to check out this website called Moviegalaxies, which dedicates itself to documenting character interactions in popular movies. Although they do provide their own analysis, individuals are welcome to download their .json data files for further analysis. After perusing their movies, I decided to go with their Toy Story dataset and was able to visualize the following.

Code:

Visual:

Success or Failure:

I would say that this visual was a success. Immediately we see that Buzz has the most interactions just based on all the links and the centrality he has in the visual. However, there are some data discrepancies. For example, Sid's Mom and Mom are the same person. Thinking about how I would make this visual better, I would like to place the labels to be above the nodes instead of directly on top of the node. Additionally, it would be great to adjust the node placement a bit so that the labels are a little easier to read.

~ Katie

Thursday, March 28, 2024

LIS 4370 R Programming - Module 12 Assignment

In the following link, please see the main functions I have created for the sentimentTextAnalyzer package. Each of the functions are completely functional but I have some testing to do to make sure that it can handle a variety of different types of text and URL and file types. 

Link to RMD file on GitHub: RMD File

easyRead:

The first function I created is called easyRead and its main purpose is to do any preprocessing before the file or link is properly cleaned by easyClean which is called within easyRead. The input is the user's selected file or link and the output is ready-to-use matrix, the appropriate format for analysis.

easyClean:

easyClean takes the preprocessed text from easyRead and cleans it by making the words lowercase, removing punctuation, removing numbers, and removing common English stopwords. The input is the preprocessed text and the output is a matrix.

easyFrequency:

In easyFrequency, it takes the previously created matrix and outputs the frequency of words found within the text. By reading in positive and negative lexicons, the function then determines of the frequency of those types of words found within the text. The input is the word_matrix, the positive and negative lexicons and the output is a list of the frequency results.

easyWordCloud:

This function takes in a dataframe and returns a default wordcloud. At this time, users must create a dataframe from the easyFrequency results for this function to work properly. 

Quick Demo:



Insights, Challenges, Improvements:

For the most part, I am satisfied with easyRead and easyClean but easyFrequency and easyWordCloud could use some polish. At this moment, user's have to input their own lexicons which I understand is not feasible for everyone. Thus, I will have to figure out how to include a few more ready-to-use lexicons. Additionally, I think I will try to change the output to be a dataframe rather than a list as individuals do have to do a bit of coding to get the results ready for visualization. As for easyWordCloud, it works but it could be better. I would like to include some style options for the user to choose from and provide some more control over the number of words shown on the wordcloud. 

~ Katie

Tuesday, March 26, 2024

LIS 4317 Visual Analytics - Module 11 Assignment

After reviewing the many visualizations Dr. Piwek made on his website,

Tufte and Minard Post

I decided to replicate the following visuals:

Density Plot Code:

Visual:

Box Plot Code:

Visual:

Reflection:

Going through Dr. Piwek's post on graphing visuals inspired by Tufte and Minard was quite interesting. There were many complex visualizations included and I have found the ones with added interactivity through the use of the package highcharter to be particularly fascinating. Going forward, I will have to refer back to the post when I need a refresher on style. 

~ Katie

Wednesday, March 20, 2024

LIS 4317 Visual Analytics - Module 10 Assignment

For this week's assignment, we are asked to make improvements to any of the given data visualizations from the Yau textbook or the economics dataset visualizations.

Right off the bat, I must admit that many of these visuals already looked perfect but I attempted to make some improvements.

Starting off with visual 2 of the hotdog dataset from the Yau textbook, the first thing that came to mind was how it could use an annotation to point out the highest on record number of hotdogs eaten as well as the name of the record holder. To do that, I simply added onto the current graph and placed a point so that viewers have an easier time picking it out.

Moving onto the economics dataset, I was intrigued by the line chart of visual 4 that showed the unemployed population over time. Looking at the other variables in the dataset, I wanted to see if I could a do a direct comparison of the unemployed over time versus the median duration of unemployment or uempmed. To do that, I was to generate two line charts of these variables and then place one on top of the other in a single visual. 

All in all, it was interesting working with time series data and I hope to come across more datasets that specifically pertain to time series.

~ Katie

LIS 4370 R Programming - Module 11 Assignment

In this week's assignment, we are asked to locate a bug that was deliberately placed inside a function.

The objective:

Find the bug and fix the code and discuss your debugging procedure.

Buggy code:

Fixed code:

Debugging Procedure:

To begin the debugging process, the first step was to run the code to look for any glaring errors that pop up. Upon running the code, I got the following syntax error message:

This error appears to be from the second for loop in the function, more specifically, the placement of the return statement. Currently, it is after one of the curly braces when it should be placed outside the loop. With this information in hand, all you need to do is to move the return statement to outside the loop. For better readability, it is a good idea to drop a line for each ending curly brace.

Check out the code here: Module 11 Code

~ Katie

Saturday, March 16, 2024

LIS 4370 R Programming - Module 10 Assignment

 sentimentTextAnalyzer R Package Proposal

Introduction:

The sentimentTextAnalyzer package aims to provide a comprehensive tool for analyzing textual data to extract sentiment insights. With the increasing volume of text data generated on various platforms, understanding sentiment is crucial for businesses and researchers alike. sentimentTextAnalyzer offers a robust solution for sentiment analysis, enabling users to extract positive and negative sentiment signals from diverse sources such as URLs and flat text files.

Objectives:

  • Develop a versatile R package, sentimentTextAnalyzer, capable of analyzing text data for positive and negative sentiment.
  • Implement algorithms to parse text efficiently and extract sentiment insights.
  • Enable the package to generate word clouds highlighting the most frequent words in the text data.
Key Features:
  • Text Parsing: Implement algorithms to parse text from various sources, including URLs and flat text files.
  • Sentiment Analysis: Develop algorithms to identify positive and negative sentiment words and calculate their frequency in the text.
  • Word Cloud Customization: Enable the package to generate word clouds depicting the most common words in the text data.
  • Customization: Allow users to customize sentiment analysis parameters and word cloud generation options.
Methodology:
  • Text Parsing: Utilize natural language processing (NLP) techniques to preprocess and tokenize text data. 
  • Sentiment Analysis: Implement sentiment lexicons and algorithms to identify positive and negative sentiment words.
  • Word Cloud Generation: Utilize packages such as wordcloud2 to generate visually appealing word clouds based on word frequency. 
  • Package Development: Utilize R programming language and relevant packages (e.g., tidyverse, text mining) to develop the sentimentTextAnalyzer package. 
  • Testing and Validation: Conduct thorough testing and validation to ensure the accuracy and reliability of sentiment analysis results.

Following this link will take you to the package's description file which provides a few details regarding licensing, potential dependencies, and the current version of the package: DESCRIPTION

~ Katie

Tuesday, March 5, 2024

LIS 4370 R Programming - Module 9 Assignment

In this week in R Programming, we are asked to select a dataset from the Vincent Arel Bundock dataset list and create visualizations from that data.

Link to the list: Vincent Arel Bundock Datasets

I decided to work from the pizzaplace.csv dataset which contains sales, pizza type, and size data over an entire year. 

In the instructions, it is mentioned that there are three ways to make visualizations in R: Base R, Lattice package, and ggplot2 package. Thus, I will generate visualizations from these listed methods.

In base R, let's make a "pie" chart that determines the occurrences of each of the 4 types of pizzas sold:

As for the second visual, let's use the lattice package to explore the relationship between prices and pizza size:

Moving on to the third visual using the ggplot2 package, the data was separated by facet to make it easier to compare trends between the four types of pizza and their associated sales over time:

After creating the visuals using the three different methods, I must admit that it is interesting to see how each method does have its pros and cons. For example, I do like to use the base R method but things can get complicated fast with having to call out all the individual methods. To make the first visual better, I should include percentages for each of the four types of pizza sold. Moving on to the second visual, I do not have too much experience using the Lattice package but I do think that the visual came out well in telling a story with the data. For instance, it still weirds me out that someone bought a super expensive small pizza that surpassed the price of a large pizza. Lastly, the ggplot2 visual really puts into perspective which pizza type is the most expensive in terms of sales like classic going above 30. 

Check out the code here: Module 9 Code

~ Katie 

LIS 4370 R Programming - sentimentTextAnalyzer2 Final Project

For this class's major final project, I set out to make the process of analyzing textual files and URL links for sentiment insights much...