A. Introduction

Prospective compensation remains one of the most important component for those seeking jobs. This analysis, therefore, will focus mostly on what factors might influence salaries for jobs.

1. Quick Look at the Dataset

  • This dataset of jobs for data scientists has 11 variables, providing information for exploring and understanding the various aspects of job offerings for to-be data scientists, mostly, but not limited to, in the US.

  • It’s important to note that the data comes from workers’ voluntarily filling out forms from the data science jobs website - aijobs.net - itself. Because the data is collected from the website’s users rather than a randomly chosen set of workers, there are bound to be biases. Therefore, the job offerings and job data from this website, and thus the dataset, might not be a good reflection of the job market globally.

  • Due to the fact above, precaution and extra steps will be done in the analysis. This is discussed further in “Ethical Considerations”

2. Main Question and Research Questions

Main question: How do you maximize your compensation as a Data Scientist?

Some smaller questions unfold as follow

  1. What are the relationships between salary and the factors given?

  2. How are the increases (or decreases) in wages over time different for different company sizes, job types, and experience levels, and company sizes?

  3. Can linear regression be used to predict wages based on given factors? If so, how accurate and realistic would these predictions be?

3. Key Variables

Dependent variable:

  • salary_in_usd: yearly salary paid, in USD.

Independent variables:

  • work_year: to see the changes throughout the years
  • experience_level: to assess the relationship experience in a job has with the salary paid
  • company_location: to see how jobs in the dataset are distributed globally and do analyses accordingly
  • company_size: to assess the relationship between the size of a company and salary paid
  • Other potentially important variables: job_title, employment_type, employee_residence, remote_ratio.

B. Ethical Considerations and Concerns

  • Echoing the first part, the dataset is not comprehensive of the job market as a whole. It reflects only users of the website who specifically choose to answer the survey. There should be consideration in subsequent steps of data analysis.

  • As a result of the dataset’s non-comprehensibility, there can be biases and unfairness. First, because specific workers are more likely to be exposed to, and respond to, the survey, the data overlooks workers who are not represented in the data, which can be unfair. Second, as will be seen in subsequent wranglings and analyses, the number of observations vary greater by year, role of jobs, or the location of the country.

  • Salaries is not the only focus or goal for those working or looking for jobs. The majority of workers are also looking for work-life balance, job fit, job security, and job stability.

  • From a privacy standpoint, there might be some risk to respondents of the survey, especially if the job title is very specific and can be traceable to the respondent.

Key points

  • The data is not comprehensive and fully representative of the field

  • Data is subject to errors in surveying

  • The data might be traceable

  • Money is an important factor, not the only

Takeaways from data wrangling

Key points

  • 93 unique job titles have been sorted into 8 groups (roles). The number of observations for each role vary greatly, diminishing its usefulness in analysis for impact of role on salary. (1)

  • The data focuses heavily on the US, which will be reflected in subsequent analyses (2)

  • Other large disparities in several observations are seen in the variables year and employment type. Analyses, therefore, will only focus on data in 2022 and 2023, and will not delve more into employment type (3)

  • Wages increased by around 4.6% in the US from 2022, but salaries in this dataset increased by 6.3%. It’s not clear why there is such a difference and if salaries have been adjusted for inflation (4)

  • There are disparities in observations for company size. Nonetheless, the variable can still be used, albeit with care (5)

(More information is available at the appendix)

D. Visualizations and Statistical Tests

1. Company Size and Salary

1.1. Bubble Chart: Changes in Salaries from 2022 to 2023 by Company Size

salaries14 <- salaries|>
  group_by(work_year, company_size)|>
  filter(company_location == "US", work_year %in% c("2022", "2023"))|>
  mutate(
    mean_salary_by_size = mean(salary_in_usd),
    count_size = n()
  )


sorted_sz <- c("S", "M", "L")
salaries14$company_size <- factor(as.character(salaries14$company_size), levels = sorted_sz)

f <- salaries14|>
  ggplot(aes(
    y = mean_salary_by_size,
    x = company_size,
    color = as.factor(as.character(work_year)),
    size = count_size
  ))+
  labs(
    title = "Mean Salary by Company Size, in 2022 and 2023",
    x = "Company Size", 
    y = "Mean Salary ($)",
    color = "Year",
    size = "Population Size"
  )+
  geom_point()+
  scale_y_continuous(labels = scales::label_number())+
  scale_color_viridis_d(option = "D", direction = -1, begin = 0, end =0.5)+
  scale_size(range = c(1,20),
             breaks = c(10, 50, 100, 500, 1000))

f

The plot visualizes a previous point in the wrangling process. The bubbles for M companies are biggest, indicating the highest number of observations, whereas L companies and S companies lag behind. For M companies, there are 1192 observations in 2022 and 1502 in 2023. These numbers are 18 and 9 for S companies and 129 and 58 for L companies.

Next, the visual illustrates an overall increase in mean salaries as the company gets bigger. S companies pay on average ~$100,000, while that for M companies is around $150,000 and for L companies is averaged at around ~160,000.

Lastly, salaries increased for every company sizes from 2022 to 2023. The biggest increase is seen in L companies - a surge from ~$148,000 to ~$174,000. The increases for other company sizes are less significant.

Key points

  • Mean salaries seem to increase as company size gets bigger

  • The change in salaries from 2022 to 2023 is greatest for L comapnies

1.2. ANOVA test (1)

salaries$company_size <- factor(salaries$company_size)

three_sizes <- aov(salary_in_usd ~ company_size, data = salaries)
summary(three_sizes)
report(three_sizes)
Anova Test - Result Table
# Creating a data frame
sz_df <- data.frame(
  Df = c(2, 3752),
  P_value = c("<2e-16 ***", NA),
  Eta2 = c(0.05, NA)
)
rownames(sz_df) <- c("company_size", "Residuals")
sz_df|>
  kbl()|>
  kable_styling(bootstrap_options = "striped", full_width = F, position = "left")
Df P_value Eta2
company_size 2 <2e-16 *** 0.05
Residuals 3752 NA NA

The ANOVA test informs us whether there are statistically significant differences in means among the independent groups.

Firstly, given that the p-value is almost 0 (much smaller than 0.05), it’s possible to reject the null hypothesis that all means are equal. There are statistically significant differences in salaries across different company sizes.

Secondly, the Eta Squared measure of 0.05 suggests that only 5% of the variance in salary can be explained by the company size.

Key point

  • The effect of company size on salary is statistically significant but is relatively small

1.3. Post hoc Tukey Test

three_group <- aov(salary_in_usd ~ company_size, data = salaries)
tukey <- glht(three_sizes,
              linfct = mcp(company_size = "Tukey"))

summary(tukey)
Tukey Test - Result Table
hypotheses_table <- data.frame(
  Hypothesis = c("M - L == 0", "S - L == 0", "S - M == 0"),
  Estimate = c(24830, -40074, -64904),
  `Std. Error` = c(3082, 5810, 5163),
  `P Value` = c("<1e-10 ***", "<1e-10 ***", "<1e-10 ***")
)

hypotheses_table|>
  kbl()|>
  kable_styling(bootstrap_options = "striped", full_width = F, position = "left")
Hypothesis Estimate Std..Error P.Value
M - L == 0 24830 3082 <1e-10 ***
S - L == 0 -40074 5810 <1e-10 ***
S - M == 0 -64904 5163 <1e-10 ***

The Tukey HSD test p-values all fall significantly below 0.05. This indicates a rejection of the null hypothesis that the true means of salaries for different company sizes are equal. In simpler terms, salaries across different company sizes are indeed significantly different.

Let’s look at what that change looks like. The first row, M-L == 0 (mean of M minus mean of L), represents true difference in means of salary of M and L companies. Because this value is 24830, it means that the mean salary paid by M companies are $24830 greater than L companies.

The same analysis can be done for S-L == 0 and S-M == 0. For S-L comparison, the value is -40074.30, meaning that the mean value of salaries paid by S companies are around $40,000 less than that paid by L companies. For S-M, the difference is -64904. S companies pay around $65,000 less than M companies. An important assumption is that all other factor are constant - ceteris paribus.

Key points

  • The Tukey HSD test shows statistically significant differences in mean salaries by company sizes.

  • M companies tend to pay the most, followed by L companies. S companies pay the least.

2. Experience and Salary

2.1. Bubble Chart: Changes in Salaries from 2022 to 2023 by Experience Level

salaries34 <- salaries |>
  filter(company_location == "US", work_year %in% c("2022", "2023"))|>
  group_by(experience_level, work_year)|>
  mutate(
    mean_salary_exp = mean(salary_in_usd)
  )|>
  ungroup()

salaries34 <- salaries34|>
  group_by(experience_level, work_year)|>
  mutate(count_exp = n())|>
  ungroup()

xp_level <- c("EN", "MI", "SE", "EX")

salaries34$experience_level <- factor(as.character(salaries34$experience_level), levels = xp_level)

xp_rename <- c("Entry", "Mid", "Senior", "Expert")

a34 <- salaries34|>
  ggplot(aes(
    x = experience_level,
    y = mean_salary_exp,
    size = count_exp,
    color = as.factor(as.character(work_year))
  ))+
  theme_gray()+
  geom_point()+
  scale_size(range = c(1,20),
             breaks = c(50, 100, 500, 1000))+
  scale_color_viridis_d(option = "B", direction = -1, begin = 0, end =0.5)+
  labs(
    x = "Experience Level",
    y = "Mean Salary ($)",
    title = "Mean Salary by Experience Level, in 2022 and 2023",
    color = "Year",
    size = "Population Size"
  )+
  scale_x_discrete(labels = xp_rename)
 
a34

There are three clear trends:

  • First, as employee’s experience goes up, mean salary goes up. The biggest step in increase is from senior to expert, although the positive change is pretty consistent for all changes in experience levels.

  • Second, average salary increases for every experience levels from 2022 to 2023. The increases are ~$5,000 for Entry and Expert levels and ~$10,000 for Middle and Senior levels.

  • Third, the size of the bubbles vary greatly. The size of the bubble increases as experience level moves up, but it bursts as it reaches expert level. In 2022, there are more than 1000 senior roles, but only 35 expert roles.

Key points

  • Salary goes up with experience

  • Salary goes up from 2022 to 2023 for every experience levels

  • Number of roles vary by experience level. Experts are most rare, followed by entry, middle, and senior employees.

2.2. ANOVA test (2)

salaries$experience_level <- factor(salaries$experience_level)
four_xp <- aov(salary_in_usd ~ experience_level, data = salaries)
summary(four_xp)
ANOVA Test - Result Table
anova_df <- data.frame(
  Factor = c("Experience Level", "Residuals"),
  Df = c(3, 3751),
  `P Value` = c("<2e-16 ***", NA),  
  Eta2 = c(0.20, NA)
)
anova_df|>
  kbl()|>
  kable_styling(bootstrap_options = "striped", full_width = F, position = "left")
Factor Df P.Value Eta2
Experience Level 3 <2e-16 *** 0.2
Residuals 3751 NA NA

Firstly, with the p-value being much smaller than 0.05, we can reject the null hypothesis that all means by experience levels are equal. There are statistically significant differences in salaries for employees with different experience levels.

Secondly, the Eta Squared value of 0.20 suggests that 20% of the variance in salary can be explained by the experience level.

Key point

  • The effect of experience level on salary is statistically significant and relatively large

2.3. Post hoc Tukey Test

four_xp <- aov(salary_in_usd ~ experience_level, data = salaries)

tukey2 <- glht(four_xp,
              linfct = mcp(experience_level = "Tukey"))
summary(tukey2)
Tukey Test - Result Table
hypotheses_df <- data.frame(
  Hypothesis = c("EX - EN == 0", "MI - EN == 0", "SE - EN == 0", "MI - EX == 0", "SE - EX == 0", "SE - MI == 0"),
  Estimate = c(116385, 25980, 74505, -90405, -41880, 48525),
  `Std. Error` = c(6158, 3731, 3350, 5649, 5406, 2286),
  `P Value` = c("<1e-10 ***", "<1e-10 ***", "<1e-10 ***", "<1e-10 ***", "<1e-10 ***", "<1e-10 ***")
)
hypotheses_df|>
  kbl()|>
  kable_styling(bootstrap_options = "striped", full_width = F, position = "left")
Hypothesis Estimate Std..Error P.Value
EX - EN == 0 116385 6158 <1e-10 ***
MI - EN == 0 25980 3731 <1e-10 ***
SE - EN == 0 74505 3350 <1e-10 ***
MI - EX == 0 -90405 5649 <1e-10 ***
SE - EX == 0 -41880 5406 <1e-10 ***
SE - MI == 0 48525 2286 <1e-10 ***

In the above comparison, a few things stand out

First, the comparison between salaries paid for employees with different experience levels reveals statistically significant results. All of the p-values are signicantly smaller than 5%, leading to the rejection of the null hypothesis, indicating that the means of salaries for different experience levels are not equal. Each experience level receive different salaries with a statistical difference.

Second, the second column tell us how salaries are different when comparing two types of experience levels. For example, EX - EN == 0 is a comparison between salaries paid for experts vs entry-level employees. A positive value of 116385 means salary for experts are on average ~$116,385 higher than that of entry level employees. A negative value indicates the group on the left pays less than that on the right. When all the analyses are done for the whole group, the result is that salaries increase correspondingly in the order: entry, middle, senior, expert. As you move up one level, salaries increases on average in the order: $25980, $48525, $41880. The biggest step up is seen from middle to senior at $48525.

This test overall delves into the statistics side of the bubble plot and the ANOVA test done above and confirms that the differences in mean salaries across groups are statistically significant. It consolidates that salaries increase as experience increases. And again, the ceteris paribus assumption holds.

Key point

  • As expertise increases by a level, salaries increases. These increases are statistically significant at every level.

  • The biggest increase is seen in the move from middle level to senior level at ~$48,525.

3. Remote Ratio and Salary

Distribution of Salary by Remote Ratio

e <- salaries |>
  filter(company_location == "US")|>
  ggplot(
    aes(
      x = salary_in_usd, 
      fill = remote_num
    )
  )+
  geom_density(alpha = .5)+
  geom_vline(xintercept = median(salaries$salary_in_usd), color= "black")+
  labs(
    title = "Distribution of Salary by Remote Ratio",
    x = "Salary ($)",
    y = "Density",
    fill = "Remote Ratio"
  )+
  scale_x_continuous(labels = scales::label_number()) +
  scale_fill_discrete(labels=c('Large', 'Medium', "Small"))+
  scale_fill_viridis_d(option = "B", direction = -1, labels = c("Not Remote", "Somewhat Remote"))

e

The salary distribution for non-remote companies has peak leaning more to the left compared to that for somewhat-remote companies. Both of these peaks are close to the line representing median salaries for both types.

Both curves are relatively smooth. The non-remote curve is a little rougher with a few small peaks beyond the $250,000 mark.

The somewhat-remote curve has slightly higher density when salary is lower than $100,000. This means jobs with remote aspects has a higher probability of paying salaries lower than $100,000, but the difference is not too significant. From $100,000 to around $175,000, density is higher for non-remote jobs. And from $175,000 beyond, the two curves exhibits an alternating movement downward.

Key points

  • The distribution curves for both somewhat-remote and non-remote jobs are relatively similar.

  • The distribution for somewhat-remote curve shows a higher tendency to pay less than $100,000 compared to non-remote jobs and lower tendency to pay around the median salary.

Conclusions from the Plots and Tests

From our plots and t-tests, company size, working remotely, and experience seem to have determinable relationship with salary. Our linear model will make use of this fact. However, the model will not include year, because year cannot be controlled by the employee and so it wouldn’t be a helpful factor to look into.

E. Linear Model

1. Test for Multicolinearity

salaries$remote_num <- as.numeric(as.character(salaries$remote_num))

chosen_vars <- salaries|>
  dplyr::select(work_year, experience_num, company_size_num, remote_num)
ggpairs(chosen_vars[,-1])

salaries$remote_num <- as.factor(as.character(salaries$remote_num))

This multicolinearty test shows that none of our independent variables are correlated with one another. None of the absolute correlation values are grater than 0.1. Therefore, we can use our variables: Experience, Company Size, and Remote Ratio without multicolinearty error

2. Linear Regression: Company Size and Salary

model <- lm(salary_in_usd ~ as.factor(as.character(company_size_num)) + remote_num + as.factor(as.character(experience_num)), salaries)
summary(model)
Linear Regression - Result Table
regression_table <- data.frame(
  Estimate = c(52941.015, 37958.600, 30603.225, -6495.486, 20508.566, 66389.758, 110172.629),
  Std.Error = c(5387.956, 4867.390, 5304.728, 1876.676, 3747.704, 3460.828, 6141.901),
  Pr.Value = rep("<0.001", 7)
)

rownames(regression_table) <- c("(Intercept)", "S to M company", "M to L company", "Non-remote to Somewhat Remote", "EN to MI", "MI to SE", "SE to EX")

regression_table|>
  kbl()|>
  kable_styling(bootstrap_options = "striped", full_width = F, position = "left")
Estimate Std.Error Pr.Value
(Intercept) 52941.015 5387.956 <0.001
S to M company 37958.600 4867.390 <0.001
M to L company 30603.225 5304.728 <0.001
Non-remote to Somewhat Remote -6495.486 1876.676 <0.001
EN to MI 20508.566 3747.704 <0.001
MI to SE 66389.758 3460.828 <0.001
SE to EX 110172.629 6141.901 <0.001

Let’s examine the table of results from the linear model. Since all dependent variables are factors, each change in level is in a different row. This is because a change in the factor’s level will likely result in a different salary change. For example, as observed in our Tukey test for experience level, moving from entry to middle level results in a different salary change compared to moving from senior to expert level.

All p-values are less than 0.001, indicating high statistical significance in predicting salaries.

Now, regarding company size, a move from a small to medium company is estimated to increase salary by ~$38,000, with standard errors around $5,000. The same move from medium to large results in an ~$30,000 salary increase. The effect of a change in company size in this linear regression is not the same as in the Tukey test because other variables are considered: the regression is multivariate, while the Tukey test has one independent variable.

Next, a move from a non-remote to a somewhat-remote job is estimated to decrease salary by ~$6,500, with a standard error nearly $2,000, which is relatively large compared to the variable’s effect.

For experience levels, moving from entry to middle level increases salary by approximately $20,500, with a standard error of ~$3,700. For middle level to senior, the increase is ~$66,000 (standard error ~$3,500), and from senior to expert, it’s ~$110,000 (standard error ~$6,100). Again, the effect of a change in experience in this linear regression differs from that in the Tukey test due to there being more variables xin the model.

Linear Regression - R Squared Result Table
r_vals <- c(0.2173,0.216)
adjusted <- c("Unadjusted", "Adjusted")

r_sq <- data.frame(
  Adjusted= adjusted,
  Value = r_vals
)

r_sq|>
  kbl()|>
  kable_styling(bootstrap_options = "striped", full_width = F, position = "left")
Adjusted Value
Unadjusted 0.2173
Adjusted 0.2160

Finally, an adjusted R-squared value of 0.216 indicates that the model explain 21.6% of the variability in salary. This relatively low value indicates there’s a significant portion of variability unaccounted for due to the lack of all necessary variables.

3. Model Validation

autoplot(model)

For all three plots (except for Normal Q-Q), there are horizontal lines close to the dashed line. Therefore, we can say that our model satisfy relatively well the three assumptions: Residuals vs Fitted (the model is linear), Scale - Location (the variance of the residuals is homogeneous), and Residuals vs Leverage (there are few outliers).

However, the Normal Q-Q plot (to examine whether the residuals are normally distributed) is not so “perfect”: the line is not fully straight and does not stay fully close to the dashed line. Let’s look more closely at the normal distribution of our residuals:

4. Histogram of residuals

residuals <- residuals(model)
hist(residuals, main = "Histogram of Residuals for Linear Model", xlab = "Residuals")

The distribution of residuals exhibits some characteristics of a normal distribution, with the majority of residuals centered around 0. The range of the residual runs from around -200,000 and to around 300,000. The residuals may not perfectly conform to a normal distribution but the observed shape consolidate the model’s assumption for residuals’ normal distribution.

5. Predictions

lower_sal<- data.frame(company_size_num = 1, remote_num = as.factor(2), experience_num=1)
lower_sal <- predict(model, lower_sal)
lower_sal

medium_sal <- data.frame(company_size_num = 2, remote_num = as.factor(2), experience_num=3)
medium_sal <- predict(model, medium_sal)
medium_sal

higher_sal <- data.frame(company_size_num = 3, remote_num = as.factor(1), experience_num=4)
higher_sal <- predict (model, higher_sal)
higher_sal

all_sal <- c(lower_sal, medium_sal, higher_sal)
display_name_sal <- c("Lower", "Medium", "Higher")
input_company <- c("S", "M", "L")
input_remote <- c("Somewhat Remote", "Somewhat Remote", "Not Remote")
input_experience <- c("Entry", "Senior", "Expert")
predict_df <- data.frame(
  
  Company_Size = input_company,
  Remote = input_remote,
  Experience = input_experience,
  Salary = display_name_sal,
  Predicted_Value = all_sal
)
Prediction - Result Table
predict_df|>
  kbl()|>
  kable_styling(bootstrap_options = "striped", full_width = F, position = "left")
Company_Size Remote Experience Salary Predicted_Value
S Somewhat Remote Entry Lower 46445.53
M Somewhat Remote Senior Medium 150793.89
L Not Remote Expert Higher 193716.87

Finally, let’s use the model to predict wage for three different workers who are designed to specifically receive lower or higher salaries.

The first works somewhat remote, with entry-level experience, in a small company. The model returns $46445.53 as the predicted salary for this worker.

The next, who has higher experience - at middle level, works remote in a medium company. Their predicted salary is much higher, at ~$150,000.

The last one, with expertise in the field, works in a large company and non-remotely. Their compensation is predicted to be nearly $200,000.

F. Conclusions

Returning to the initial points raised, there are various limitations to both the dataset and this analysis. The dataset is susceptible to the aforementioned errors, such as sampling size. The linear model also falls short of fully explaining data scientists’ wages, as there are numerous other variables that can influence them.

Nevertheless, the above analysis provides some insights into factors that might maximize (or increase) your salary as a data scientist. These factors can include being highly skilled, working for a larger company, and not working remotely. As simplistic as this analysis may be, it can prove helpful in making informed decisions about our careers.

To enhance this analysis, we could collect or utilize more comprehensive data that reflects other aspects of a data scientist’s career and provides fuller information for the variables already available. For instance, specifying the location of the job (district, area, city, etc.), considering performance metrics, accounting for inflation, or using data on a monthly basis instead of yearly could contribute to creating models that better reflect the intricacies of the field. A comprehensive model could even be developed into a predictive “machine” that accurately forecasts salaries based on given indicators, thereby assisting job seekers in maximizing their chances in the job market.

G. Appendix

Expansion on Data Wrangling

  1. There are 93 unique observations for the variable job title. These observations have been sorted into eight different roles and stored in a new variable - “roles”. These eight roles are Data Science, Machine Learning Engineering, Research and Development, Business Intelligence and Analytics, Data Engineering and Architecture, Data Strategy and Consulting, Specialized Roles, and Data Operations and Management.
  • The sizes of population, represented by bubbles’ sizes, for each role in each year vary. The smallest bubbles represents ~10 observations each, the largest ones represent more than 400. Additionally, wages did not increase or decrease similarly across every type of role from 2022 to 2023.
  1. Despite there being 72 countries for company locations, only 6 countries have more than 50 jobs. Importantly, job info focuses far greater on companies in the US compared to the other five countries, each with over 50 entries, at a whopping 3000+. Any comparisons of job types between these countries are likely to be misleading. So, analysis will be about job market for data scientists in the US only.

  2. The number of observations for full-time employees vastly outnumbers those of all other employment type. The numbers of observations are 2899 for Full Time, 28 times the total off all other employment types. This is not representative of the job market as a whole. Therefore, subsequent analyses will not focus on how employment types affect salaries.

  • For observations by year, there are only 31 observations in 2020 and 100 in 2021. In 2022, however, the observations were 13-fold at 1339 observations, and nearly 1600 observations were collected in 2023. For higher accuracy in representing real trends in the US job market for data scientists, comparisons will mainly focus on differences in 2022 and 2023.
  1. On inflation or changes over time: We don’t know if salaries in the dataset are adjusted for inflation. Usually, inflation is associated with a rise in wages. From our exploratory graphs, the % change in salaries from 2022 to 2023 (in the US) is 6.31%. The change in consumer price index from July 2022 to July 2023 is 3.2% and change in wages is 4.6% from last September. These numbers give an idea of how the market moved during the period. It’s uncertain whether these numbers have been adjusted for inflation and why it’s higher than both the inflation rate and the average growth in salaries in the US.

  2. There are more disparities in company size. For company size, there are 54 small, 263 large, and 2723 medium-sized companies. Interestingly, research found that tech workers “prefer medium-sized companies to behemoths and small firms”. This can be related to what’s found through this data wrangling, but might not be the best explanation. Even though there’s a considerable difference in the number of observations, this variable will still be used, albeit with great care.Notes

Notes

(1), (2) By doing the ANOVA test, it is assumed the values in the dataset satisfy the underlying assumptions: Variable Type, Independence, Normality, Equality of Variances, and Outliers. This test is not performed in this analysis.

Dataset

Data Science Salaries 2023 💸. (n.d.). Www.kaggle.com. https://www.kaggle.com/datasets/arnabchaki/data-science-salaries-2023

Metadata

NgoK_CodeBook. (n.d.). Google Docs. Retrieved December 14, 2023, from https://docs.google.com/document/d/1dZuj7IXIuuL6m-AC8XM6OjhPzONC0aAmrj0BG_kSAdE

References

Wigert, B. (2022, February 21). The top 6 things employees want in their next job. Gallup. https://www.gallup.com/workplace/389807/top-things-employees-next-job.aspx

Create a comment box using Rmarkdown (HTML file). (n.d.). Stack Overflow. Retrieved December 13, 2023, from https://stackoverflow.com/questions/47806200/create-a-comment-box-using-rmarkdown-html-file

Consumer prices up 3.2 percent from July 2022 to July 2023 : The Economics Daily: U.S. Bureau of Labor Statistics. (n.d.). Www.bls.gov. https://www.bls.gov/opub/ted/2023/consumer-prices-up-3-2-percent-from-july-2022-to-july-2023.htm#:~:text=The%20Consumer%20Price%20Index%20for

Facts & Data on Small Business and Entrepreneurship. (n.d.). Small Business & Entrepreneurship Council. Retrieved December 13, 2023, from https://sbecouncil.org/about-us/facts-and-data/#

Freelancer vs. Independent Contractor: What’s the Difference? (n.d.). Indeed Career Guide. https://www.indeed.com/career-advice/finding-a-job/freelance-vs-independent-contractor

Data Scientist Overview (n.d.). Data Scientist Overview [Review of Data Scientist Overview]. Money.usnews.com; US NEWS. Retrieved December 13, 2023, from [https://money.usnews.com/careers/best-jobs/data-scientist#%3E:\\](https://money.usnews.com/careers/best-jobs/data-scientist#%3E:){.uri}~:text=While%20data%20science%20is%20still,large%20companies%20and%20research%20institutions.%20%3Chttps://www.naics.com/business-lists/counts-by-company-size/%3E

OpenAI. (2023).ChatGPT. Chat.openai.com; OpenAI. https://chat.openai.com