Final Paper - Working Draft
##Introduction
In summer 2021, staff at Parallax Advanced Research were asked to complete an anonymous survey regarding their perceptions of innovation within the organization. The survey included 20 core questions spanning topics including organizational risk tolerance, creative expression, ease of idea sharing, and employee self-actualization. A variety of demographic information was also collected.
This analysis will examine the differences in participant responses based on management roles within Parallax. The question “do managers perceive the innovation environment differently from those in non-management roles?” will guide the data exploration and analysis.
##Data
Below are the variables included in the survey data, along with data types and descriptions.
knitr::opts_chunk$set(echo = TRUE)
library(readxl)
innovation_description <- read_excel(path="/Users/angelasmith/Desktop/DACSS601/Final Project/Innovation Culture Survey 2021 - for DACSS final.xlsx", range="Description!A1:C36")
library(rmarkdown)
paged_table(innovation_description)
knitr::opts_chunk$set(echo = TRUE)
library(readxl)
library(dplyr)
#Reading in the excel sheet
innovation <- read_excel(path="/Users/angelasmith/Desktop/DACSS601/Final Project/Innovation Culture Survey 2021 - for DACSS final.xlsx", range="Numerical!A1:AC53")
#mutating employed months and years to a months-only variable
innovation <- mutate(innovation,totalmonthsEmployed = ((yearsEmployed*12)+monthsEmployed))
#mutating management role to a two-category variable
innovation <- innovation %>%
mutate(managementRoleSimple = recode(managementRole, "Non-management"="Non-management", "Middle-management"="Management", "Upper-management"="Management"))
#making highestDegree ordinal
innovation <- innovation %>%
mutate(highestDegree =factor(highestDegree, order = TRUE, levels = c("High School Diploma","Associate's Degree","Bachelor's Degree","Master's Degree","Professonal Degree","Doctoral Degree")))
#mutating survey responses to text
#innovation <- innovation %>%
# mutate(across(utilizeCapabilitiesSelfact:prioritizeTimeBudgetRisktol (recode("-3"="Strongly #disagree","-2"="Disagree","-1"="Slightly disagree", "0"="Neither agree nor disagree", "1"="Slightly #agree","2"="Agree","3"="Strongly agree")))
#using paged_table to show the entire innovation table without cutoffs
library(rmarkdown)
paged_table(innovation)
#factor(var, levels=c(“disagree”, “neutral”, “agree”))
###Demographics
Of 101 individuals invited to participate in the survey, 52 responded to the survey. About 3/5 of respondents were non-management, and 2/5 were management. The majority of respondents have a bachelor’s degree or higher. About half of the organization has technical degrees, and about 2/3 have non-technical or no degrees.
####Management Role
knitr::opts_chunk$set(echo = TRUE)
###Employees in a management role
table(innovation$managementRoleSimple)
Management Non-management
21 31
####Degree level
knitr::opts_chunk$set(echo = TRUE)
###Employee highest degree
table(innovation$highestDegree)
High School Diploma Associate's Degree Bachelor's Degree
6 1 15
Master's Degree Professonal Degree Doctoral Degree
20 0 9
####Degree type
knitr::opts_chunk$set(echo = TRUE)
###Employee educational background
table(innovation$educationBackground)
Both Non-Technical Technical
10 25 17
###Survey responses
Survey responses were based on a 7-point Likert scale. -3 strongly disagree -2 disagree -1 slightly disagree 0 neither agree nor disagree 1 slightly agree 2 agree 3 strongly agree
Below, a visualization summarizes responses by management role and survey variable. add more discussion here once the visualization is fixed
knitr::opts_chunk$set(echo = TRUE)
library(tidyr)
#pivots the dataframe for geom_tile()
innovation_pivot <- pivot_longer(innovation,
cols = utilizeCapabilitiesSelfact:prioritizeTimeBudgetRisktol,
names_to = "surveyColumns",
values_to = "surveyResponse")
#testing percentages -- these are the right percentages
innovation_pivotpct <- innovation_pivot %>%
select(id,managementRoleSimple,surveyColumns,surveyResponse) %>%
count(managementRoleSimple,surveyColumns) %>%
group_by(managementRoleSimple) %>%
mutate(percent = (100/n))
#this works but it isn't what I want -- close
innovation_pivot2 <- innovation_pivot %>%
select(id,managementRoleSimple,surveyColumns,surveyResponse) %>%
count(managementRoleSimple,surveyColumns,surveyResponse) %>%
mutate(percent = (n*(innovation_pivotpct$percent)))
#adds counts to the innovation pivot
#innovation_pivot2 <- innovation_pivot %>%
# select(id,managementRoleSimple,surveyColumns,surveyResponse) %>%
# count(managementRoleSimple,surveyColumns,surveyResponse)
library(ggplot2)
#creates geom_tile summarizing responses of all variables within the survey
ggplot(innovation_pivot2, aes(x=surveyResponse, y= surveyColumns, fill=percent)) +
geom_tile() +
facet_wrap(vars(managementRoleSimple)) +
scale_fill_gradient(low = "blue", high = "red") +
geom_text(aes(label=round(percent, digits = 1)))
Help: the percentages in the graph are incorrect. I’ve calculated the right percentages in the above code for innovation_pivotpct – how do I join this with the innovation_pivot2 data?
Below, the medians for each variable were calculated to further verify information gleaned from the visualization above.
knitr::opts_chunk$set(echo = TRUE)
#TO DO: look into whether I can turn these tables into boxplots or mosaic visualizations for reading ease.
###Responses by management role
descriptive2 <- innovation %>%
group_by(managementRoleSimple) %>%
summarise_at(vars(utilizeCapabilitiesSelfact:prioritizeTimeBudgetRisktol), median, na.rm=TRUE)
paged_table(descriptive2)
##Visualizations
The median response to the prompt “Taking a risk (with the chance of failure) can negatively impact my career trajectory at Parallax” was -1, which translates to “slightly disagree” in the survey response. This indicates on the whole, staff do not perceive they would be penalized for taking a risk that might lead to failure. However, disaggregating this data reveals that management and non-management perceptions diverge. Management appears more comfortable taking risks without career reprisal. But non-management staff had a median response of 0, which translates to “neither agree nor disagree.” This difference in response might indicate that staff are less clear on Parallax’s rules and boundaries on risk-taking. They may also be more risk averse in general. This is an opportunity for Parallax to clarify it’s organizational stance on risk-taking for staff, particularly those in non-management roles.
knitr::opts_chunk$set(echo = TRUE)
library(ggplot2)
##Original Plot
#ggplot(innovation, aes(ideasFilteredEase)) + geom_bar(fill='gray',col='black') +
# labs(x='Response',y='Frequency',title='Ideas are filtered so that only the most promising opportunities make it to the surface') +
#scale_x_discrete(breaks = -3:3, labels=c("Strongly Disagree","Disagree","Slightly Disagree","Neither Agree Nor Disagree","Slightly Agree","Agree","Strongly Agree")) +
# theme(axis.text.x = element_text(angle = 90))
#innovation <- innovation %>%
# group_by(managementRoleSimple) %>%
# mutate(median_ideasFilteredEase =median(ideasFilteredEase))
#ggplot(innovation, aes(ideasFilteredEase)) +
# geom_bar(aes(y = (..count..)/sum(..count..)),fill='gray',col='black') +
# scale_y_continuous(labels=scales::percent) +
# geom_vline(aes(xintercept = median_ideasFilteredEase), color="blue") +
# labs(x='Staff Response',y='Relative Frequency',title='Ideas are filtered so that only the most promising opportunities make it to the surface') +
# scale_x_discrete(breaks = -3:3, labels=c("Strongly Disagree","Disagree","Slightly Disagree","Neither Agree Nor Disagree","Slightly Agree","Agree","Strongly Agree")) +
# theme(axis.text.x = element_text(angle = 90))+
# facet_wrap(vars(managementRoleSimple))
innovation <- innovation %>%
mutate(median_riskCareerImpactRisktol = median(riskCareerImpactRisktol),
sd_riskCareerImpactRisktol = sd(riskCareerImpactRisktol))
##Original Plot
ggplot(innovation, aes(riskCareerImpactRisktol)) +
geom_bar(fill='gray',col='black') +
# geom_errorbar(aes(ymin=median_riskCareerImpactRisktol-sd_riskCareerImpactRisktol,ymax=median_riskCareerImpactRisktol+sd_riskCareerImpactRisktol),color="orange") +
labs(x='Response',y='Frequency',title='Taking a risk (with the chance of failure) can negatively impact my career trajectory at Parallax') +
geom_vline(aes(xintercept = median(riskCareerImpactRisktol)), color="blue") +
#scale_x_discrete(breaks = -3:3, labels=c("Strongly Disagree","Disagree","Slightly Disagree","Neither Agree Nor Disagree","Slightly Agree","Agree","Strongly Agree")) +
theme(axis.text.x = element_text(angle = 90))
innovation <- innovation %>%
group_by(managementRoleSimple) %>%
mutate(median_riskCareerImpactRisktol =median(riskCareerImpactRisktol))
ggplot(innovation, aes(riskCareerImpactRisktol)) +
geom_bar(aes(y = (..count..)/sum(..count..)),fill='gray',col='black') +
scale_y_continuous(labels=scales::percent) +
geom_vline(aes(xintercept = median_riskCareerImpactRisktol), color="blue") +
labs(x='Staff Response',y='Relative Frequency',subtitle='Taking a risk (with the chance of failure) can negatively impact my career trajectory at Parallax') +
# geom_errorbar(aes(ymin=median_riskCareerImpactRisktol-sd_riskCareerImpactRisktol,ymax=median_riskCareerImpactRisktol+sd_riskCareerImpactRisktol),color="orange") +
# scale_x_discrete(breaks = -3:3, labels=c("Strongly Disagree","Disagree","Slightly Disagree","Neither Agree Nor Disagree","Slightly Agree","Agree","Strongly Agree")) +
theme(axis.text.x = element_text(angle = 90))+
facet_wrap(vars(managementRoleSimple))
I considered that it might be possible members of management were risk-seeking without fear of reprisal due to tenure length in the organization. It would stand to reason that, the longer you’re at an organization, the more likely you might be to take risks because you know which risks you can take without getting fired. To examine this, I plotted the responses to the risk question against the number of months employed at Parallax, and used color to disaggregate by management level. There doesn’t really appear to be any correlation between months employed at Parallax and perception of risk-taking. In fact, most non-management roles with longer tenure (>30 months) were, at best, unsure of the impact of risk taking would have on their career.
knitr::opts_chunk$set(echo = TRUE)
ggplot(innovation, aes(riskCareerImpactRisktol,totalmonthsEmployed, color = managementRoleSimple)) +
geom_point()+
labs(x='Response',y='Months Employed',subtitle='Taking a risk (with the chance of failure) can negatively impact my career trajectory at Parallax',title='Dummy')
just need to do some writing here…
knitr::opts_chunk$set(echo = TRUE)
library(ggplot2)
innovation <- innovation %>%
mutate(median_readilyHeardEase = median(readilyHeardEase),
sd_readilyHeardEase = sd(readilyHeardEase))
##Original Plot
ggplot(innovation, aes(readilyHeardEase)) +
geom_bar(fill='gray',col='black') +
labs(x='Response',y='Frequency',subtitle="Parallax's processes allow ideas to be readily heard up the chain of command.") +
geom_vline(aes(xintercept = median(readilyHeardEase)), color="blue") +
theme(axis.text.x = element_text(angle = 90))
innovation <- innovation %>%
group_by(managementRoleSimple) %>%
mutate(median_readilyHeardEase =median(readilyHeardEase))
ggplot(innovation, aes(readilyHeardEase)) +
geom_bar(aes(y = (..count..)/sum(..count..)),fill='gray',col='black') +
scale_y_continuous(labels=scales::percent) +
geom_vline(aes(xintercept = median_readilyHeardEase), color="blue") +
labs(x='Staff Response',y='Relative Frequency',subtitle="Parallax's processes allow ideas to be readily heard up the chain of command.") +
theme(axis.text.x = element_text(angle = 90))+
facet_wrap(vars(managementRoleSimple))
and need to do some writing here…
knitr::opts_chunk$set(echo = TRUE)
library(ggplot2)
innovation <- innovation %>%
mutate(median_rewardsRiskRisktol = median(rewardsRiskRisktol),
sd_rewardsRiskRisktol = sd(rewardsRiskRisktol))
##Original Plot
ggplot(innovation, aes(rewardsRiskRisktol)) +
geom_bar(fill='gray',col='black') +
labs(x='Response',y='Frequency',subtitle="Parallax rewards people for participating in potentially risky opportunities, irrespective of the outcome.") +
geom_vline(aes(xintercept = median(rewardsRiskRisktol)), color="blue") +
theme(axis.text.x = element_text(angle = 90))
innovation <- innovation %>%
group_by(managementRoleSimple) %>%
mutate(median_rewardsRiskRisktol =median(rewardsRiskRisktol))
ggplot(innovation, aes(rewardsRiskRisktol)) +
geom_bar(aes(y = (..count..)/sum(..count..)),fill='gray',col='black') +
scale_y_continuous(labels=scales::percent) +
geom_vline(aes(xintercept = median_rewardsRiskRisktol), color="blue") +
labs(x='Staff Response',y='Relative Frequency',subtitle="Parallax rewards people for participating in potentially risky opportunities, irrespective of the outcome.") +
theme(axis.text.x = element_text(angle = 90))+
facet_wrap(vars(managementRoleSimple))
##Reflection
and add some writing here…
##Conclusion
and here…
##What is missing from your final project? 1) correct percentages in the geom_tile graph. I may need help troubleshooting this. 2) observations about the geom_tile graph. 3) recoding the Likert scale information – having difficulty integrating recode(), across(), and mutate(). 4) general visualization cleanup – titles, labels, color coordinating. 5) adding a bit more documentation to the bar graphs for future reference. 6) general cleanup of this document – delete any unused code, get rid of anything redundant.
##What do you hope to accomplish between now and submission time? All of the points from above.
Text and figures are licensed under Creative Commons Attribution CC BY-NC 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".
For attribution, please cite this work as
Smith (2022, Jan. 20). Data Analytics and Computational Social Science: HW06. Retrieved from https://github.com/DACSS/dacss_course_website/posts/httpsrpubscomangelanicolesmith856957/
BibTeX citation
@misc{smith2022hw06, author = {Smith, Angela}, title = {Data Analytics and Computational Social Science: HW06}, url = {https://github.com/DACSS/dacss_course_website/posts/httpsrpubscomangelanicolesmith856957/}, year = {2022} }