Project 1: Business Instagram Account Growth Model
Team members: Jackie Zeng and Cory Knox
How will a small start-up brand in the fashion-beauty cosmetics industry grow over the next few years on Instagram? Inspired by the new fashion brand, FadingFeelings.Co, that had launched just this July, we looked towards a variety of fashion/cosmetics brands that varied in size, luxury, and age, all on the social media platform Instagram. By tracking their follower growth since their social media launched, we were able to track the various patterns that seemed to follow corresponding with their business type. This then aided in the predictions for where FadingFeelings’s instagram would go in the years to come.
The first challenge at hand was the decision of how the business types would be divided. We settled on three business brands to follow: 1. large , “commercial” brands such as H&M, Sephora, and MorpheBrushes, 2. Luxury, “Hype-Beast” brands such as Off White, Supreme, and Antisocial Social Club, and 3. Small start-ups that have recently come to the social media scene such as EggieShop, Lunar Beauty, and Raw Spirit Fragrances. All represent a different side of business development and the paths in which FadingFeelings could take.
Next was data collection from these nine different brands. By graphing the follower count of the brand compared to a specific time division, we obtained a visual that could then be observed for further analysis. Once the visuals were made, we noticed a trend within the individual divisions. For the larger, commercial brands, all seemed to follow a linear growth model, with steady increase in followers. As for the luxury brands that follow the “Hype-Beast”, street wear culture, an exponential line of growth seemed to follow, indicating that follower growth took on an extreme over time. Finally for the smaller brands new to the social media scene, a logarithmic pattern is obviously seen. As they are new to the industry it is expected to see extreme spikes in follower growth since launch.
The final challenge and decision that we had to make was in reference to the time frame. From the year 2018 to the present, Instagram instigated a company-business confidentiality rule allowing businesses the option to not share their follower growth to the public. This led to challenges in our research and an observable time cut off at this year, especially seen in the smaller, recent start up graphs. Our follower information was unobservable by physical number since the cut off. This led to our decision to vary the time frames within each group. As for the smaller, start-up companies, we settled on since their launch to their cut-off, trying to obtain as much of a visual data collection as possible. For the larger companies that followed a commercial outlook and linear pattern, one year seemed to be an understandable time frame, capturing the linear growth that was needed. Finally for our luxury brands with exponential growth, we settled on a two year frame, long enough to capture the full exponential pattern mentioned previously. Mind you the companies all began with different levels of popularity before their Instagrams launched, some being already well established businesses amongst the public, some being unknown completely without any following. Although the time frames differ, the popularity growth patterns were established and seen clearly.
# Configure Jupyter so figures appear in the notebook%matplotlibinline# Configure Jupyter to display the assigned value after an assignment%configInteractiveShell.ast_node_interactivity='last_expr_or_assign'# import functions from the modsim.py modulefrommodsimimport*importnumpyimportcsvimportpandasaspdimportmath
Reading the data
df=pd.read_csv('clean_data_trimmed.csv')print("Column headings:")print(df.columns)#print (df['HM']) #prints entire data set
# System stuff: HM = df['HM'].iloc, Sephora = df['Sephora'].ilocMorphe=System(f_0=df['Morphebrushes'].iloc,t_0=0,t_end=11,GR=0.20)#gets the initial followers count of the big companies.HM=System(f_0=df['HM'].iloc,t_0=0,t_end=11,GR=0.14)Sephora=System(f_0=df['Sephora'].iloc,t_0=0,t_end=11,GR=0.130)Morphe#prints values to check if it's correct
Plot function and first run simulation function
defplot_results(name,t_0,t_end,timeseries,title,shift):x=linrange(t_0,t_end,1,endpoint=True)units=""if(df[name].iloc>1e6):#convert to in terms of millionsy=df[name]/1e6timeseries=timeseries/1e6units=" (millions)"elif(df[name].iloc>1e3):#convert to in terms of thousandsy=df[name]/1e3timeseries=timeseries/1e3units=" (thousands)"else:y=df[name]#shifts the model plot up or down to better match the data. timeseries+=shift#labeling allows easier differentiation between model and collected data graphsplot(x,y,color='C4',label='SocialBlade')plot(timeseries,'--',color='C1',label='Model')y_label='Numbers of Followers'+unitsdecorate(xlabel='Months',ylabel=y_label,title=title)
Simulating big companies
defrun_simulation(system):results=TimeSeries()results[system.t_0]=system.f_0fortinlinrange(system.t_0,system.t_end):#f_gain = system.GR * results[t] #this tests Continuous differential growth. It turns out this doesn't fit our model very well. f_gain=system.GR*results#discrete constant type that worksresults[t+1]=results[t]+f_gainreturnresults
#Morpheresults=run_simulation(Morphe)plot_results('Morphebrushes',0,23,results,"MorpheBrushes - Big Company",-180)print()
#H&Mresults=run_simulation(HM)plot_results('HM',0,23,results,"H&M - Big Company",-0.1)
#Sephoraresults=run_simulation(Sephora)plot_results('Sephora',0,23,results,"Sephora - Big Company",-0.17)
Simulating luxury brands
#this version of run simulation uses an exponential growth modeldefrun_simulation_2(system):results=TimeSeries()results[system.t_0]=system.f_0fortinlinrange(system.t_0,system.t_end):#exponential growth model:f_gain=system.coef*exp(system.GR*t)results[t+1]=results[t]+f_gainreturnresults
For smaller startups, we decided to model its growth with a logarithmic curve. This phemonomon is largely because most of these startups are created by influencers and youtubers with a significant following. Hence, we can often observe a boom of follows increase in the beginning stages.
#Eggie dataEggieX=linrange(1,24,1,endpoint=True)EggieY=df['Eggie']plot(EggieX,EggieY,'-',color='C0')#Eggie modeling using numpy#creates array with Eggie's dataset:y=numpy.array(df['Eggie'][:6])x=numpy.array(linrange(1,7))#polyfit creates the best fit log curve from a set of dataprint(numpy.polyfit(numpy.log(x),y,1))#using the printed data, I graphed the model that fits the projections of EggieShopy=44278.06684523*log(x)+13535.91250717plot(x,y,':',color='C1',label='Model')#equation of modelprint('The equation of this curve is: y = 44278.06684523 * log(x) + 13535.91250717')#label graphdecorate(xlabel='Months',ylabel='Numbers of Followers',title='Eggie Shop - Small Startup')
The equation of this curve is: y = 44278.06684523 * log(x) + 13535.91250717
#LunarBean dataLBX=linrange(1,24,1,endpoint=True)LBY=df['LB']plot(LBX,LBY,color='C2')y=numpy.array(df['LB'][:11])x=numpy.array(linrange(1,12))print(numpy.polyfit(numpy.log(x),y,1))y=21228.1239933*log(x)+82037.98535263plot(x,y,':',color='C1',label='Model')print('The equation of this curve is: y = 21228.1239933 * log(x) + 82037.98535263')decorate(xlabel='Months',ylabel='Numbers of Followers',title='Lunar Bean - Small Startup')
The equation of this curve is: y = 21228.1239933 * log(x) + 82037.98535263
#RawSpiritFragrances dataRSFX=linrange(1,24,1,endpoint=True)RSFY=df['RSF']plot(RSFX,RSFY,color='C4')y=numpy.array(df['RSF'][:20])x=numpy.array(linrange(1,21))print(numpy.polyfit(numpy.log(x),y,1))y=973.31881964*log(x)+5194.89738788plot(x,y,':',color='C1',label='Model')print('The equation of this curve is: y = 973.31881964 * log(x) + 5194.89738788')decorate(xlabel='Months',ylabel='Numbers of Followers',title='Raw Spirit Fragrances - Small Startup')
[ 973.31881964 5194.89738788]
The equation of this curve is: y = 973.31881964 * log(x) + 5194.89738788
Depending on where FadingFeelings.Co goes in the years to come and how they decide to establish their brand, the growth pattern that they may follow when in discussion of social media presence and followers can vary. They may take on an exponential growth pattern similar to that of the luxury brands if they were to be accompanied by a celebrity support, higher market price, and were to shift their social media audience to that similar to the other Hype-Beast brands. They may go towards a linear fit if they were to shift to a more commercial image, lowering prices and increasing product, representing a louder, broader, more flexible audience than that of a higher-market group. If FadingFeelings.Co continues to follow the predicted behavior, we can assume that within the next few months, it will begin to imitate the log graphs seen with the smaller businesses. From there it may go to exponential growth or linear or another completely different option, while this is also assuming that FadingFeelings.Co and the other brands remains financially stable and continues to have the resources needed to grow in such a way. Unfortunately there is only so much data that we have collected and related back to the topic at hand given our time. If we were to dig into a deeper analysis, we would follow FadingFeelings.Co along with the nine other companies over a longer time frame from launch to present day and then some. We would also increase the company numbers we were to analyze, as well as bringing in other business models, small boutiques, privately owned beauty companies, etc. The flaw in our model was the variety and lack of. If we wanted to come closer to the “perfect model” we would want to broaden our horizons. But the model at hand is a good beginning showing some general growth patterns businesses experience on Instagram.