<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.3">Jekyll</generator><link href="https://bradenmcritchfield.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://bradenmcritchfield.github.io/" rel="alternate" type="text/html" /><updated>2023-12-19T03:18:52+00:00</updated><id>https://bradenmcritchfield.github.io/feed.xml</id><title type="html">Exploring the World through Data</title><subtitle>An exploration of the ways data science can be used to explore hobbies, sports, etc.</subtitle><author><name>Braden Critchfield</name></author><entry><title type="html">Board Game Bonanza: EDA</title><link href="https://bradenmcritchfield.github.io/2023/12/13/Board-Game-Bonanza-EDA.html" rel="alternate" type="text/html" title="Board Game Bonanza: EDA" /><published>2023-12-13T00:00:00+00:00</published><updated>2023-12-13T00:00:00+00:00</updated><id>https://bradenmcritchfield.github.io/2023/12/13/Board-Game-Bonanza-EDA</id><content type="html" xml:base="https://bradenmcritchfield.github.io/2023/12/13/Board-Game-Bonanza-EDA.html">&lt;p&gt;In a &lt;a href=&quot;https://bradenmcritchfield.github.io/2023/12/12/Board-Game-Bonanza-Data-Collection.html&quot;&gt;previous post&lt;/a&gt;, I showed how we can collect data to find what makes a board game popular. In this post, we’ll use python to explore that data.&lt;/p&gt;

&lt;p&gt;As a reminder, all data comes from BoardGamesGeek!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/BGG.webp&quot; alt=&quot;BGG logo&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;what-is-in-our-data&quot;&gt;What is in our data?&lt;/h1&gt;
&lt;p&gt;As you might remember from the previous post, this data consists of the top 1000 rated games on BoardGameGeek. The data also includes different variables about each board game, including year, age recommendations, estimated time, ratings, average price, etc.&lt;/p&gt;

&lt;p&gt;Because this is the top 1000 board games and not all the board games (due to time constraints), we can’t draw any specific conclusions about what makes a board game highly rated (since this iis a biased sample). However, we can still make some interesting observations.&lt;/p&gt;

&lt;h1 id=&quot;distributions-of-variables&quot;&gt;Distributions of Variables&lt;/h1&gt;
&lt;p&gt;What are the distributional breakdowns of each factor in our data? What outliers are interesting?&lt;/p&gt;

&lt;p&gt;To answer these questions, let’s take a look at the distributions of our data. This first figure shows the histograms for our three categorical variables: group size, length of time, and age rating.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/CatHists.png&quot; alt=&quot;CategoricalHistograms&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The vast majority of these top 1000 games are in the center of these 3 groups: Small - Large groups (but not too small or too large), short to long (but not quick or too long), and are rated for preteeens and teens (not too young but not too adult either). Whether this is because there are just more of games with these factors in general, or because these receive higher ratings is the question that can only be answered by looking at more data.&lt;/p&gt;

&lt;p&gt;We will also take a look at the distributions of our numerical data. Unfortunately, some of these graphs are impacted by outliers:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/ContHistplots1.png&quot; alt=&quot;Numerical Variables&quot; /&gt;
&lt;img src=&quot;/assets/images/ContHistplots2.png&quot; alt=&quot;More Numerical Variables&quot; /&gt;
&lt;img src=&quot;/assets/images/ContHistplots3.png&quot; alt=&quot;And More Numerical Variables&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I adjusted these graphs to account for outliers:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;I changed the year published distribution to leave out the 6 games that are pre-1950 (one game, Go, was from 2000 B.C.E. which made it difficult to see the graph).&lt;/li&gt;
  &lt;li&gt;I removed the 4 games that have max players of 99-100 players.&lt;/li&gt;
  &lt;li&gt;For the distribution of playing times, I removed two games with a playing time of 20 hours. T&lt;/li&gt;
  &lt;li&gt;he Average Price distribution has “Magic: The Gathering” left out, because it has an average price in the $7000s (probably due to the rarity of some cards).&lt;/li&gt;
  &lt;li&gt;There are some other outliers I left in; for example, there are 11 games with over 80,000 ratings. But I removed the outliers that made the graphs difficult to see, and I wanted to note them because they are different than the vast majority of the games.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of my takeaways for these distributions and what they tell us about the most popular 1000 games:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;The most popular games are all pretty recent; the median age is 8 years old, or around 2015.&lt;/li&gt;
  &lt;li&gt;It seems the most common number of players range is 2-4 players.&lt;/li&gt;
  &lt;li&gt;The median playing time is an hour and 15 minutes and the median age minimum is 12 years old.&lt;/li&gt;
  &lt;li&gt;While these games are sorted by top 1000 games by Bayes Rating, the better measure of popularity is number of ratings, which is the best indicator of whether someone played it.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1 id=&quot;correlation-of-variables&quot;&gt;Correlation of Variables&lt;/h1&gt;
&lt;p&gt;How are different variables related? And which variable relationshps should we ignore?&lt;/p&gt;

&lt;p&gt;To answer these questions, let’s take a look at how the variables are all related through a correlation plot.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/correlationmatrix.png&quot; alt=&quot;Correlation Matrix&quot; /&gt;&lt;/p&gt;

&lt;p&gt;My biggest takeaways from this figure:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;First is what to ignore: &lt;strong&gt;Bayes and Average Rating&lt;/strong&gt; are highly correlated, which makes sense because they are the same except for an additional 30 average ratings for the Bayes rating. When performing analysis, it is best to ignore one of these values to avoid covariance.&lt;/li&gt;
  &lt;li&gt;As well, ignore the correlation between &lt;strong&gt;Age and Year Published&lt;/strong&gt;; because one is a function of the other, these will always be perfectly negatively correlated.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;“Number of Ratings” and “Number of Accessories”&lt;/strong&gt; are pretty moderately correlated. Perhaps the more expansions and versions of a game, the more opportunities a person has to play the game and the more likely they are to rate the game.&lt;/li&gt;
  &lt;li&gt;There is a moderately high correlation between the &lt;strong&gt;variance of ratings and the amount of playing time a game requires&lt;/strong&gt;; since a higher variance indicates a greater spread of opinion, this seems to show that the longer a game takes, the more ploarizing a game becomes.&lt;/li&gt;
  &lt;li&gt;There’s an interesting slight negative correlation between &lt;strong&gt;number of ratings and average price&lt;/strong&gt;. My prediction is that the more popular a game is, the more games there are which lowers the price. It’s the games that are a little rarer but still have a devoted fanbase that are likely more expensive, wwhich is backed up by the fact that price and average rating are more highly correlated than price and Bayes rating (less ratings means the generic ratings in a Bayes Rating are weighted more heavily).&lt;/li&gt;
  &lt;li&gt;The &lt;strong&gt;minimum number of players&lt;/strong&gt; has a very small correlation with the &lt;strong&gt;maximum number of players&lt;/strong&gt;. This is very interesting because I assumed that if there is a smaller minimum, there will likely be a small maximum as well. There could just be noise throwing off the correlation in this case, but there’s enough that makes the correlation near 0.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1 id=&quot;distribution-of-popularity&quot;&gt;Distribution of Popularity&lt;/h1&gt;
&lt;p&gt;How are number of reviews distributed across different factors? Is there any significant difference between their means?&lt;/p&gt;

&lt;p&gt;When it comes to our categroical factors, I was interested to see if any of them had an impact on a game’s popularity. I took a look using violin plots:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/ViolinPlots.png&quot; alt=&quot;Violin Plots&quot; /&gt;&lt;/p&gt;

&lt;p&gt;These plots sort of parallel our distributions. That is, the more “central” values of these factors have the highest median number of ratins and the highest maximums (though it doesn’t look like any of these are significantly different from one another). However, there are more popular games in the quick and young categroies than one would expect given their number in the dataset. Perhaps this is tied to people rating games they play, and many people play a lot of games when they were kids. Playing time and age minimum are moderately correlated due to the fact that younger kids have shorter attention spans.&lt;/p&gt;

&lt;h1 id=&quot;popularity-by-age-of-game&quot;&gt;Popularity by Age of Game&lt;/h1&gt;
&lt;p&gt;How does year published impact popularity?
In looking at these top 1000 games, it’s interesting to take a look at how when the game was published impacts the game’s popularity (as measured by number of ratings).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/PopularitybyYear.png&quot; alt=&quot;Year vs. Number of Ratings&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The most popular games were published between 5-20 years ago (with one of the most popular being almost 30 years ago). On one hand, we shouldn’t expect to see any extremely recent games have a lot of ratings, since ratings increase over time. But part of this could also be attributed to who is giving ratings and the response bias this creates.&lt;/p&gt;

&lt;h1 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;Unfortunately, this data does not contain all board games, just the top 1000 rated games. Because of this, we have a biased sample and can’t see the composition of lower rated games. However, we can still make some assumptions. From these graphs, it indicates that most highly rated games are similar in basic features. They mainly seem to be in a goldilocks zone of sorts, not too long but not too short, not too many people but not too few, etc.&lt;/p&gt;

&lt;p&gt;Take a look at the &lt;a href=&quot;https://boardgamebonanza.streamlit.app/&quot;&gt;dashboard I built&lt;/a&gt; to explore the data further and see if there are any trends you notice. Send me an email with any further suggestions to explore!&lt;/p&gt;

&lt;p&gt;Visit &lt;a href=&quot;https://github.com/bradenmcritchfield/semester_project/tree/main/DataProject&quot;&gt;my repository&lt;/a&gt; for data and jupyter notebooks to create these graphs.&lt;/p&gt;</content><author><name>Braden Critchfield</name></author><summary type="html">In a previous post, I showed how we can collect data to find what makes a board game popular. In this post, we’ll use python to explore that data.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://bradenmcritchfield.github.io/assets/images/GameImage.jpg" /><media:content medium="image" url="https://bradenmcritchfield.github.io/assets/images/GameImage.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Board Game Bonanza: Data Collection and Wrangling</title><link href="https://bradenmcritchfield.github.io/2023/12/12/Board-Game-Bonanza-Data-Collection.html" rel="alternate" type="text/html" title="Board Game Bonanza: Data Collection and Wrangling" /><published>2023-12-12T00:00:00+00:00</published><updated>2023-12-12T00:00:00+00:00</updated><id>https://bradenmcritchfield.github.io/2023/12/12/Board-Game-Bonanza-Data-Collection</id><content type="html" xml:base="https://bradenmcritchfield.github.io/2023/12/12/Board-Game-Bonanza-Data-Collection.html">&lt;p&gt;Everyone loves a good board game. Board games bring people together, offer intellectual stimulation, and provide a form of entertainment that is not tied to a screen. But what makes a board game popular?&lt;/p&gt;

&lt;p&gt;To explore this question, first we need to find data on popular board games. We’ll use python to collect, explore, and clean this data.&lt;/p&gt;

&lt;h1 id=&quot;data-source&quot;&gt;Data Source&lt;/h1&gt;
&lt;p&gt;One great source of board game data is &lt;a href=&quot;https://boardgamegeek.com/&quot;&gt;BoardGameGeek&lt;/a&gt;. This website is an online database and community for those who love board games. Not only does it have information about hundreds and thousands of board and card games, but it also allows users to rate and sell board games on the website. Because of this, we can find data about each board game’s requirements, it’s popularity, and it’s value.&lt;/p&gt;

&lt;p&gt;BoardGameGeek offers an API that allows the user to access data on a game by game basis. Before accessing the API, it’s best to check the &lt;a href=&quot;https://boardgamegeek.com/wiki/page/XML_API_Terms_of_Use#&quot;&gt;Terms of Service&lt;/a&gt;. The good news is that we are able to use this data for non-commercial use. We just need to credit Board Games Geek by including its logo in public facing uses of the API.&lt;/p&gt;

&lt;p&gt;So all credit for this data is given to BoardGameGeek. Here is their logo:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/BGG.webp&quot; alt=&quot;BGG logo&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;accessing-the-api&quot;&gt;Accessing the API&lt;/h2&gt;
&lt;p&gt;Board Game Geek has &lt;a href=&quot;https://boardgamegeek.com/wiki/page/BGG_XML_API2&quot;&gt;an explanation of their API&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To access the data for each board game, we need the base url, the endpoint, parameters (set the id of the game and whether to show stats and marketplace data).&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;baseurl = &quot;https://boardgamegeek.com/xmlapi2&quot;
endpoint = &quot;/thing?id=&quot;
parameter1 = str(ids[0])
parameter2 = &quot;&amp;amp;stats=1&amp;amp;marketplace=1&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Each API pull will result in an XML file, that looks a little like this:
&lt;img src=&quot;/assets/images/SampleXMLfile.png&quot; alt=&quot;XML API pull example&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;prepping-the-api-pull&quot;&gt;Prepping the API pull&lt;/h2&gt;
&lt;p&gt;Because each API pull does not result in all the board game data, but the data for one board game, we need to set up a process to pull data for all the board games we want. To do this, we need the IDs for each board game we want to pull. Luckily, on the API explanation page, BGG provides a csv file with data on every board game. Unfortuantely, this does not include much of the data we want, but we can use this csv for IDs of board games to pull.&lt;/p&gt;

&lt;p&gt;To download the .csv file, you need to make an account with BGG. Once you have an account, you can download this file from the API explanation page.&lt;/p&gt;

&lt;p&gt;Import the following packages:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;import pandas as pd
import numpy as np
import requests
import re
import urllib.parse
import matplotlib.pyplot as plt
import seaborn as sns
from bs4 import BeautifulSoup
import time
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Next, read in the board games .csv file and select the IDs you want to use. I used the first 1000 IDs because it is a time consuming process:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;## Get Board game IDs from csv file provided by boardgamegeek.com
ids = pd.read_csv(&quot;boardgames_ranks.csv&quot;)
#Select top 1000
ids = ids[&quot;id&quot;]
ids = ids[0:1000]

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Then set up portions of the API url using the code referenced above:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;baseurl = &quot;https://boardgamegeek.com/xmlapi2&quot;
endpoint = &quot;/thing?id=&quot;
parameter1 = str(ids[0])
parameter2 = &quot;&amp;amp;stats=1&amp;amp;marketplace=1&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;initialize-the-data-fields&quot;&gt;Initialize the data fields&lt;/h2&gt;
&lt;p&gt;Then initialize the data fields we want. These include the board game name, the year it was released, minimum number of players, maximum number of players, the estimated playing time, the minimum age, the number of accessories, the number of users who gave a rating, the average rating, the Bayes rating (which is the average rating with 30 average ratings tacked on to prevent new board games with high ratings from taking over rankings), the standard deviation of the ratings, and the average USD price of games selling in the marketplace as of November 12.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;name = []
yearpublished = []
minplayers = []
maxplayers = []
playingtime = []
minage = []
accessory_num = []
users_rated = []
averagescore = []
bayesaveragescore = []
stddev = []
avg_USD_price = []
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;pulling-and-scraping-the-data&quot;&gt;Pulling and scraping the data&lt;/h2&gt;
&lt;p&gt;Finally, we need to loop through our list of IDs to pull the XML file for each board game, and pull the data we want from the XML file. A for loop is not the most time effective, but it was the best way I could think of to pull the API for each ID. Notice that there is a request delay of 10 seconds so requests don’t get throttled. For the most part, this code uses Beautiful Soup to pull much of the data. USD price data is calulated by summing up all the listings in USD dollars and then dividing it by the number of listings.
&lt;strong&gt;Warning: This takes a long time to run. I only pulled the top 1000 rated games because of the time it took to pull this data.&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;for x in range(0,len(ids)):
    parameter1 = str(ids[x])
    time.sleep(10) #so that requests don't get throttled
    url = baseurl + endpoint + parameter1 + parameter2
    r = requests.get(url)
    if r.status_code == 429: #to prevent going on with the code when request is denied for too much traffic
        time.sleep(10)
        r = requests.get(url)
    if r.status_code == 429:
        time.sleep(10)
        r = requests.get(url)
    soup = BeautifulSoup(r.content, &quot;xml&quot;)
    name.append(soup.find(&quot;name&quot;)[&quot;value&quot;])
    yearpublished.append(soup.find(&quot;yearpublished&quot;)[&quot;value&quot;])
    minplayers.append(soup.find(&quot;minplayers&quot;)[&quot;value&quot;])
    maxplayers.append(soup.find(&quot;maxplayers&quot;)[&quot;value&quot;])
    playingtime.append(soup.find(&quot;playingtime&quot;)[&quot;value&quot;])
    minage.append(soup.find(&quot;minage&quot;)[&quot;value&quot;])
    accessory_num.append(len(soup.find_all(&quot;link&quot;, type=&quot;boardgameaccessory&quot;)))
    users_rated.append(soup.find(&quot;usersrated&quot;)[&quot;value&quot;])
    averagescore.append(soup.find(&quot;average&quot;)[&quot;value&quot;])
    stddev.append(soup.find(&quot;stddev&quot;)[&quot;value&quot;])
    bayesaveragescore.append(soup.find(&quot;bayesaverage&quot;)[&quot;value&quot;])
    usd_prices = [float(item[&quot;value&quot;]) for item in soup.find_all(&quot;price&quot;, currency = &quot;USD&quot;)]
    if len(usd_prices) == 0:
        avg_USD_price.append(None)
    else:
        avg_USD_price.append(sum(usd_prices)/len(usd_prices))

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Finally, we can create a data frame from all these lists.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;boardGames = pd.DataFrame({&quot;Title&quot;: name, &quot;Year Published&quot;: yearpublished, &quot;Min Players&quot;: minplayers, &quot;Max Players&quot;: maxplayers, &quot;Playing Time&quot;: playingtime, &quot;Age Minimum&quot;: minage, &quot;Number of Accessories&quot;: accessory_num, &quot;Number of Ratings&quot;: users_rated, &quot;Average Rating&quot;: averagescore, &quot;Bayes Rating&quot;: bayesaveragescore, &quot;Standard Deviation&quot;: stddev, &quot;Average USD Price&quot;: avg_USD_price})
boardGames.to_csv(&quot;boardgamesdata.csv&quot;)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h1 id=&quot;data-cleaning-and-engineering&quot;&gt;Data Cleaning and Engineering&lt;/h1&gt;
&lt;p&gt;The data now needs to be cleaned and engineered.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Create the new variable of age of game (by subtracting the year published from 2023, the year the data was pulled), change the playing time variable to be an integer, and set the other numeric columns to be numeric.
    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;boardGames[&quot;Age (Years)&quot;] = 2023 - boardGames[&quot;Year Published&quot;].astype(int)
boardGames[&quot;Playing Time&quot;] = boardGames[&quot;Playing Time&quot;].astype(int)
num_cols = [&quot;Year Published&quot;, &quot;Min Players&quot;, &quot;Max Players&quot;, &quot;Age Minimum&quot;, &quot;Number of Accessories&quot;, &quot;Number of Ratings&quot;, &quot;Average Rating&quot;, &quot;Bayes Rating&quot;, &quot;Standard Deviation&quot;, &quot;Average USD Price&quot;]
boardGames[num_cols] = boardGames[num_cols].apply(pd.to_numeric)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Create categories for estimated playing time, recommended minimum age, and maximum playing group. We can do this by using pandas cut function, which assigns numeric values to labelled bins you determine.
    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;boardGames[&quot;Time Category&quot;] = pd.cut(boardGames[&quot;Playing Time&quot;], bins=[0,31,61,91,181,301,1501], labels = [&quot;Quick&quot;, &quot;Short&quot;, &quot;Moderate&quot;, &quot;Long&quot;, &quot;Very Long&quot;, &quot;Marathon&quot;])
boardGames[&quot;AgeRating&quot;] = pd.cut(boardGames[&quot;Age Minimum&quot;], bins=[0,5,8,12,16,24], labels = [&quot;Any&quot;, &quot;Young&quot;, &quot;PreTeen&quot;, &quot;Teen&quot;, &quot;Adult&quot;])
boardGames[&quot;GroupSize&quot;] = pd.cut(boardGames[&quot;Max Players&quot;], bins=[0, 1, 4, 8, 101], labels = [&quot;Individual&quot;, &quot;Small&quot;, &quot;Large&quot;, &quot;Massive&quot;])
boardGames.to_csv(&quot;boardgamesdata.csv&quot;, index = False)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The first five rows of the resulting data frame should look something like this:
&lt;img src=&quot;/assets/images/BoardGamesDataframe.png&quot; alt=&quot;Boardgames dataframe&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Congratulations! We now have data for the top 1000 board games that we can now explore. In the &lt;a href=&quot;https://bradenmcritchfield.github.io/2023/12/13/Board-Game-Bonanza-EDA.html&quot;&gt;next article&lt;/a&gt;, we’ll explore this data to find what features these popular board games share.&lt;/p&gt;

&lt;p&gt;Visit &lt;a href=&quot;https://github.com/bradenmcritchfield/semester_project/tree/main/DataProject&quot;&gt;my repository&lt;/a&gt; for the data and jupyter notebook to replicate this process.&lt;/p&gt;</content><author><name>Braden Critchfield</name></author><summary type="html">Everyone loves a good board game. Board games bring people together, offer intellectual stimulation, and provide a form of entertainment that is not tied to a screen. But what makes a board game popular?</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://bradenmcritchfield.github.io/assets/images/GameImage.jpg" /><media:content medium="image" url="https://bradenmcritchfield.github.io/assets/images/GameImage.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Predictions in Sports using Poisson Distributions</title><link href="https://bradenmcritchfield.github.io/2023/10/12/Poisson-Sports-Prediction-Tutorial.html" rel="alternate" type="text/html" title="Predictions in Sports using Poisson Distributions" /><published>2023-10-12T00:00:00+00:00</published><updated>2023-10-12T00:00:00+00:00</updated><id>https://bradenmcritchfield.github.io/2023/10/12/Poisson-Sports-Prediction-Tutorial</id><content type="html" xml:base="https://bradenmcritchfield.github.io/2023/10/12/Poisson-Sports-Prediction-Tutorial.html">&lt;p&gt;When the improbable victory occurs, it feels magical. When the unlikely defeat happens, it feels tragic. The randomness of games and sports is part of what makes them enjoyable. Understanding this randomness and getting a sense as to how likely or unlikely something is to occur can help one better appreciate the feat one’s witnessed.
Using simple probability distributions, we can quickly determine the probability of a sporting event outcome. In this article, we will discuss the use of the Poisson distribution to determine probabilities in sports like basketball, baseball, soccer, and football.&lt;/p&gt;

&lt;h1 id=&quot;what-is-the-poisson-distribution&quot;&gt;What is the Poisson distribution?&lt;/h1&gt;

&lt;p&gt;The Poisson distribution is a statistical distribution that uses the average occurences in a given amount of time or space to give the probability of an event occurring a certain number of times in that same amount of time or space. In the context of sports, this occurence can be the number of points scored per minute, the number of runs scored per inning, etc. By using the poisson distribution, it allows us to find the probabilities that a team will score x number of points/runs/goals in a k amount of time remaining. Then, by comparing this to the distribution of the other team, we can quickly find the probability of a team scoring more than the other team by the end of the game.&lt;/p&gt;

&lt;h1 id=&quot;putting-it-into-practice&quot;&gt;Putting it into Practice&lt;/h1&gt;
&lt;h2 id=&quot;probability-for-1-team-1988-kirk-gibson-home-run&quot;&gt;Probability for 1 Team: 1988 Kirk Gibson Home Run&lt;/h2&gt;

&lt;p&gt;For this example, we’ll look at baseball. In baseball, the unit of time is an out. Three outs make up an inning, and once a team completes 9 innings, they no longer have an opportunity to score runs. This is an imperfect unit of time since the length of time between each out can differ, but for a simple example it can work. Because this is a simple model, we’ll ignore effects like opponent and pitcher, and assume independence between each occurrence.
On October 15, 1988, the Los Angeles Dodgers were playing the Oakland Athletics in the World Series. The Dodgers were down 4-3 in the final inning. This was the Dodgers final opportunity to win the first game of the Series. What was their odds of winning the game? We can use python to find out.
First, we need to import the correct packages. In this case, we’ll use poisson from scipy.stats.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;from scipy.stats import poisson

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Second, we need to find the average number of runs the Dodgers scored in 1988. According to &lt;a href=&quot;https://www.baseball-reference.com/leagues/majors/1988.shtml&quot;&gt;baseball reference&lt;/a&gt;, the Dodgers scored 3.88 runs per game (or 27 outs) in 1988. This means for every out, the Dodgers scored on average .144 runs. With three outs left, they were expected to score .431 runs.
Poisson.cdf requires the parameters k (the outcome we are finding the probability for) and mu (the average outcome in that amount of time). It then returns the probability of getting k or less. In this case, k is 2 (because the Dodgers needed 2 runs to win) and mu is .144. Because this will return the probability of scoring anything less than 2, we will subtract our poisson.cdf function from 1 to get the probability of scoring anything more than 2.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;1- poisson.cdf(k=2, mu =.431)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In this case, the probability comes out to be 0.97%. What actually happened was just as incredible. The Dodgers spent two outs and got one runner on base. They turned to their injured star, Kirk Gibson, to attempt to win the game. Literally hobbling up to bat against the Athletics’ best pitcher, Kirk Gibson hit a home run and won the game for Dodgers, who went on to win the rest of the World Series. &lt;a href=&quot;https://www.youtube.com/watch?v=Db2sFZVGxJ4&quot;&gt;Watching Kirk Gibson’s at bat unfold&lt;/a&gt;, the 1% chance of the Dodgers winning feels like magic.&lt;/p&gt;

&lt;h2 id=&quot;probability-for-2-teams-1996-utah-jazz-comeback&quot;&gt;Probability for 2 Teams: 1996 Utah Jazz Comeback&lt;/h2&gt;
&lt;p&gt;The Dodgers example only involves one team; how do we approach comparing two teams? To solve this, we’ll look at the greatest comeback in the National Basketball Association. 
The Utah Jazz were down 36 points halfway through a game in November of 1996. If you were a fan (or even alive) at this time, you probably knew it was extremely unlikely the Jazz would come back to win the game. But how unlikely?&lt;/p&gt;

&lt;p&gt;Using &lt;a href=&quot;https://www.basketball-reference.com/leagues/NBA_1997.html&quot;&gt;Basketball Reference’s 1996-1997 team data&lt;/a&gt;, we find that the Utah Jazz averaged 103.1 points per game that season and the Denver Nuggets averaged 97.8 points per game. For simplicity sake, we’ll ignore team defense (like most NBA teams ;) ).&lt;/p&gt;

&lt;p&gt;First, we’ll generate a range of values for the Nuggets that captures all values they could reasonably score in half of a game. We’ll do the same for the Jazz, except a minimum and maximum 36 more than the Nuggets.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;#Utah Jazz averaged 103.1 points per game
#Denver Nuggets averaged 97.8 points per game

#Generate list of points from 0 to 101 for the Nuggets and a list of each of 
#those numbers plus 36 for the Jazz. This is the outcomes where Jazz can win.
point_values_Jazz = list(range(0+36,101+36))
point_values_Nuggets = list(range(0, 101))

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We’ll use these range of values and Poisson.pmf to generate the probability the Nuggets will score each value in the range. We’ll use 1 - Poisson.cdf to find the probability the Utah Jazz will score that value or more.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;
#Find the probability of the Nuggets scoring each of those point values.
#Find the probability of the Jazz scoring at least that many point values
UtahJazz = 1 - poisson.cdf(k = point_values_Jazz, mu =103.1/2) #divide mu by 2 so it's average for the half
DenverNuggets = poisson.pmf(k = point_values_Nuggets, mu =97.8/2)

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Because the Utah Jazz’s list of probabilities is for values incremented 36 points more than the Nuggets’, by multiplying each of these lists together, t gives us the probablity of the Nuggets scoring that number of points AND the Jazz scoring 36 points or more (assuming independence for simplicity). By summing these probabilities up, we can find the probability of any of these outcomes occurring.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;
#Multiply the two probabilities together to find the probabilitiy of each occuring (assuming independnece)
Deficitprobabilities = UtahJazz * DenverNuggets

#Sum up those probabilities to find the sum
Deficitprobabilities.sum()*100
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;According to our simple model, there was a .03% of the Jazz winning. Talk about improbable!&lt;/p&gt;

&lt;h1 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;To build more complex models, you can take into account other factors, such as defense of the opposing team, average when under similar factors, etc. However, a simple Poisson model works well in a pinch! Next time you watch a sporting event, try a simple poisson model to see who is favored to win, or to see the probability a team holds on to their lead throughout the game. Because this model applies to any sport where occurrences occur in an amount of time, this works for soccer, baseball, basketball, football, hockey, and more. As you put this into practice, you can quantify the highs and lows of following sports by capturing how improbable it was!&lt;/p&gt;</content><author><name>Braden Critchfield</name></author><summary type="html">When the improbable victory occurs, it feels magical. When the unlikely defeat happens, it feels tragic. The randomness of games and sports is part of what makes them enjoyable. Understanding this randomness and getting a sense as to how likely or unlikely something is to occur can help one better appreciate the feat one’s witnessed. Using simple probability distributions, we can quickly determine the probability of a sporting event outcome. In this article, we will discuss the use of the Poisson distribution to determine probabilities in sports like basketball, baseball, soccer, and football.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://bradenmcritchfield.github.io/assets/images/baseball2.jpg" /><media:content medium="image" url="https://bradenmcritchfield.github.io/assets/images/baseball2.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">First Post</title><link href="https://bradenmcritchfield.github.io/2023/09/26/first-post.html" rel="alternate" type="text/html" title="First Post" /><published>2023-09-26T00:00:00+00:00</published><updated>2023-09-26T00:00:00+00:00</updated><id>https://bradenmcritchfield.github.io/2023/09/26/first-post</id><content type="html" xml:base="https://bradenmcritchfield.github.io/2023/09/26/first-post.html">&lt;p&gt;Hello World!&lt;/p&gt;</content><author><name>Braden Critchfield</name></author><summary type="html">Hello World!</summary></entry><entry><title type="html">How to create a blog post</title><link href="https://bradenmcritchfield.github.io/2022/08/01/sample-post.html" rel="alternate" type="text/html" title="How to create a blog post" /><published>2022-08-01T00:00:00+00:00</published><updated>2022-08-01T00:00:00+00:00</updated><id>https://bradenmcritchfield.github.io/2022/08/01/sample-post</id><content type="html" xml:base="https://bradenmcritchfield.github.io/2022/08/01/sample-post.html">&lt;h2 id=&quot;steps-for-creating-a-new-post&quot;&gt;Steps for creating a new post.&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Create a new file in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_posts&lt;/code&gt; folder called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;YYYY-MM-DD-post-name.md&lt;/code&gt;, where YYYY is the year (2023), MM numeric month (01-12), and DD is the numeric day of the month (01-31).  The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;post-name&lt;/code&gt; is a short name for the new post with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-&lt;/code&gt; between words.  &lt;strong&gt;You must use this name convention for all new posts.&lt;/strong&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;Make the YML heading.  All pages in the site need to start with a YML heading.  For posts you should use the following header:
    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;---
layout: post
title:  &quot;Post Name&quot;
author: Your name
description: Short yet informative description
image: /assets/images/blog-image.jpg
---
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;For this theme, the layout should stay as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;post&lt;/code&gt;.   All the other fields should be updated with the information for your particular blog post.  The blog image should be a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.jpg&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.png&lt;/code&gt; file that you should add to the folder &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assets/images&lt;/code&gt;.  Don’t make it too large or the page will take longer to load (500-800 KB is a good size).  Leave the file path as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/assets/images/&lt;/code&gt; in the header area.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Write the body of the blog using markdown.  There are a lot of references for markdown available.  I like the &lt;a href=&quot;https://www.markdownguide.org&quot;&gt;Markdown Guide&lt;/a&gt; because many of the examples show both the markdown and the html code.  There are separate pages for &lt;a href=&quot;https://www.markdownguide.org/basic-syntax/&quot;&gt;basic syntax&lt;/a&gt;, &lt;a href=&quot;https://www.markdownguide.org/extended-syntax/&quot;&gt;extended syntax&lt;/a&gt;, and a &lt;a href=&quot;https://www.markdownguide.org/cheat-sheet/&quot;&gt;cheatsheet&lt;/a&gt; for quick reference.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;You can also use html code snippets along with the markdown.  Often, using html will give you a little more control and flexibility as demonstrated below.&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
&lt;hr /&gt;

&lt;h3 id=&quot;links&quot;&gt;Links&lt;/h3&gt;

&lt;p&gt;To create a link (internal or external), enclose the link text in brackets (e.g., [Statistics Department]) and then follow it immediately with the URL in parentheses (e.g., (https://statistics.byu.edu)).&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;My favorite department at BYU is the [Statistics Department](https://statistics.byu.edu).
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;My favorite department at BYU is the &lt;a href=&quot;https://statistics.byu.edu&quot;&gt;Statistics Department&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want external links to open in a separate window, you will need to use html code with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;target=&quot;_blank&quot;&lt;/code&gt; inside the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;a&lt;/code&gt; tag.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;My favorite department at BYU is the &amp;lt;a href=&quot;https:statistics.byu.edu&quot; target=&quot;_blank&quot;&amp;gt;Statistics Department&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;My favorite department at BYU is the &lt;a href=&quot;https:statistics.byu.edu&quot; target=&quot;_blank&quot;&gt;Statistics Department&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;
&lt;hr /&gt;

&lt;h2 id=&quot;internal-links-and-files&quot;&gt;Internal Links and Files&lt;/h2&gt;

&lt;p&gt;If you want to have a link that points to another location on your site or if you want to include a file (such as an image or video) you must use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;site.url&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;site.baseurl&lt;/code&gt; variables when making the link reference.  For example, this link to pointing to the &lt;a href=&quot;https://bradenmcritchfield.github.io//about&quot;&gt;About&lt;/a&gt; page is coded as:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;[About]({{site.url}}/{{site.baseurl}}/about)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Paths to files should also be referenced with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;site.url&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;site.baseurl&lt;/code&gt; variables (see the section on &lt;strong&gt;Adding Images&lt;/strong&gt;).&lt;/p&gt;

&lt;hr /&gt;
&lt;hr /&gt;

&lt;h2 id=&quot;adding-images&quot;&gt;Adding Images&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;In the examples below, if your image ends with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.png&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.JPEG&lt;/code&gt;, use the appropriate extension instead of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.jpg&lt;/code&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Images for the blog will generally but put into the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assets/images&lt;/code&gt; folder.  (You can also create a subfolder for images, but you will need to include the subfolder name in the reference link.)&lt;/p&gt;

&lt;p&gt;Markdown syntax for including images is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;![Fig Name](path/to/image)&lt;/code&gt;.  For example:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;![Figure]({{site.url}}/{{site.baseurl}}/assets/images/image_name.jpg)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://bradenmcritchfield.github.io//assets/images/image5.jpg&quot; alt=&quot;Figure&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;
&lt;hr /&gt;

&lt;h3 id=&quot;resizing-images&quot;&gt;Resizing images&lt;/h3&gt;

&lt;p&gt;The image I added in the previous section seems a bit large for this post.  Unfortunately,
there isn’t a good way to resize images with markdown, so if you need to resize an image, use html instead of markdown and specify the width in the style parameter as follows:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;img src=&quot;{{site.url}}/{{site.baseurl}}/assets/images/image_name.jpg&quot; alt=&quot;&quot; style=&quot;width:300px;&quot;/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;(Example with width set to 300 pixels)
&lt;img src=&quot;https://bradenmcritchfield.github.io//assets/images/image5.jpg&quot; alt=&quot;&quot; style=&quot;width:300px;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;(Example with width set to 100 pixels)
&lt;img src=&quot;https://bradenmcritchfield.github.io//assets/images/image5.jpg&quot; alt=&quot;&quot; style=&quot;width:100px;&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;
&lt;hr /&gt;
&lt;hr /&gt;

&lt;h2 id=&quot;troubleshooting&quot;&gt;Troubleshooting&lt;/h2&gt;

&lt;p&gt;Here are some things to keep in mind if your blog appearance isn’t going as you planned:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem:  The blog post that I created isn’t appearing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Possible Solutions:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Check your date. GitHub pages won’t display blog posts with future dates&lt;/li&gt;
  &lt;li&gt;Check the yaml header.  If there are any special characters in any of the fields, you need to use quotes around the entire field entry.  The most common culprit is the description.  If you’re having trouble, try putting quotes around the entire description&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;Problem:  I know that I made changes to a blog post but the changes aren’t appearing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Possible Solution:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Check the header.  If there are any special characters in any of the fields, you need to use quotes around the entire field entry.  The most common culprit is the description.  If you’re having trouble, try putting quotes around the entire description.&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;Problem:  My entire blog has weird formatting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Possible Solution:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Usually this is an address problem.  Double check your url and baseurl in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_config&lt;/code&gt; file&lt;/li&gt;
&lt;/ul&gt;</content><author><name>Shannon Tass</name></author><summary type="html">Steps for creating a new post.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://bradenmcritchfield.github.io/assets/images/image5.jpg" /><media:content medium="image" url="https://bradenmcritchfield.github.io/assets/images/image5.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>