Load packages

# install.packages("readstata13")
# install.packages("survey")
# install.packages("corrplot")

library(readstata13)
library(survey)
## Loading required package: grid
## Loading required package: Matrix
## Loading required package: survival
## 
## Attaching package: 'survey'
## The following object is masked from 'package:graphics':
## 
##     dotchart
library(corrplot)
## corrplot 0.92 loaded

Download and import data

# download.file("https://www.federalreserve.gov/consumerscommunities/files/SHED_public_use_data_2021_(Stata).zip", 
#   "data/SHED_public_use_data_2021_(Stata).zip")
# unzip("data/SHED_public_use_data_2021_(Stata).zip", exdir = "data")


SHED <- readstata13::read.dta13("data/public2021.dta", generate.factors = TRUE, nonint.factors = TRUE)
## Warning in readstata13::read.dta13("data/public2021.dta", generate.factors = TRUE, : 
##    Duplicated factor levels for variables
## 
##    ind1, pph12003, pph12004, pph12005, pph12006
## 
##    Unique labels for these variables have been generated.
# S16_b
# In the past year, have you done the following
# with cryptocurrency, such as Bitcoin or Ethereum?
# - Used to buy something or make a payment
SHED$crypto.used.as.payment <- SHED$S16_b == "Yes"

# BK1
# Do you and/or your spouse or partner
# currently have a checking, savings or money
# market account?
SHED$lacks.bank.account <- SHED$BK1 == "No"

# C2A
# Do you currently have at least one credit card?
SHED$lacks.credit.card <- SHED$C2A == "No"

# ppgender
# Gender [Ipsos source]
SHED$is.male <- SHED$ppgender == "Male"

# race_5cat Race 5 categories
SHED$race <- SHED$race_5cat

# ED0
# What is the highest level of school you have
# completed or the highest degree you have
# received?
SHED$education.level <- relevel(SHED$ED0, "High school degree or GED")

# ED1
# Which one of the following broad categories
# best describes your (current/most recent)
# educational program?
SHED$education.subject <- relevel(SHED$ED1, "Business/management")

# pppa_lgb [Ipsos source]
# Q230: Which of the following best describes how you think of yourself?
SHED$lgbtq <- relevel(SHED$pppa_lgb, "Straight, that is, not gay")

# ppp20197 [Ipsos source]
# QEG22: Are you a citizen of the United States?
SHED$is.noncitizen <- SHED$ppp20197 == "No"

# I40
# Which of the following categories best
# describes the total income that you and/or
# your spouse or partner received from all
# sources, before taxes and deductions, in the
# past 12 months?
SHED$income.category <- SHED$I40

# B2
# Overall, which one of the following best
# describes how well you are managing
# financially these days?
SHED$overall.financial.wellbeing <- SHED$B2

# I41_b
# Supplemental Nutrition Assistance Program
# (SNAP or food stamps) - In the past 12
# months, have you received any of the
# following?
SHED$received.food.stamps <- SHED$I41_b

# FL0
# On a scale from zero to ten, where zero is
# not at all willing to take risks and ten is
# very willing to take risks, what number would
# you be on the scale?

SHED$risk.tolerance <- as.numeric(SHED$FL0) - 1

# B10
# Overall, on a scale from zero to ten, where
# zero is not at all satisfied and ten is
# completely satisfied, how satisfied are you
# with life as a whole these days?
SHED$life.satisfaction <- as.numeric(SHED$B10) - 1

# ppage
# Age [Ipsos source]
# ppcmdate
# Date member completed Core survey
# Must correct age variable for time of initial Ipsos survey
SHED$age <- SHED$ppage + (2021 - as.numeric(substr(SHED$ppcmdate, 1, 4)))

# ind1
# IND1: Industry (tight scale) in current or main job
SHED$job.industry <- relevel(SHED$ind1, "Retail/Stores/Shopping (including Online Retail)")

# ppcm0160 [Ipsos source]
# Q26: Occupation (detailed) in current or main job
SHED$job.occupation <- relevel(SHED$ppcm0160, "Retail Sales")

# ppcm1301 [Ipsos source]
# GOVEMP1: Employer type
SHED$employer.type <- relevel(SHED$ppcm1301, "Private-for-profit company")

# ppmsacat
# MSA Status [Ipsos source]
SHED$resides.in.metro.statistical.area <- SHED$ppmsacat == "Metro"

# ppfs0596 [Ipsos source]
# Q22: What is the approximate total amount of
# your household's savings and investments?
SHED$total.household.savings <- relevel(SHED$ppfs0596, "$100,000 - $249,999")

# A1_a
# In the past 12 months, has each of the following happened to you:
# - Turned down for credit
SHED$rejected.for.credit <- SHED$A1_a == "Yes"

# BK2_a
# In the past 12 months, did you and/or spouse or partner:
# - Purchase a money order from a place other than a bank
SHED$purchase.non.bank.money.order <- SHED$BK2_a == "Yes"

# BK2_b
# In the past 12 months, did you and/or spouse or partner:
# - Cash a check at a place other than a bank
SHED$cash.check.non.bank <- SHED$BK2_b == "Yes"

# BK2_c
# In the past 12 months, did you and/or spouse or partner:
# - Take out a payday loan or payday advance
SHED$take.payday.loan <- SHED$BK2_c == "Yes"

# BK2_d
# In the past 12 months, did you and/or spouse or partner:
# - Take out a pawn shop loan or an auto title loan
SHED$take.auto.or.pawn.shop.loan <- SHED$BK2_d == "Yes"

# BK2_e
# In the past 12 months, did you and/or spouse or partner:
# - Obtain a tax refund advance to receive your refund faster
SHED$take.tax.refund.advance <- SHED$BK2_e == "Yes"

# BNPL1
# In the past year, have you used a “Buy Now
# Pay Later” service to buy something?
SHED$used.buy.now.pay.later <- SHED$BNPL1 == "Yes"

# ppfs1482 [Ipsos source]
# Q108: Where do you think your credit score falls
SHED$perceived.credit.score <- relevel(SHED$ppfs1482, "Fair")

# GE2A
# Some people earn money by selling items at
# places like flea markets and garage sales or
# through online marketplaces like eBay or
# Etsy. In the past month, have you made money
# by selling items in any of these ways?

SHED$informal.selling.of.goods <- SHED$GE2A == "Yes"

# GE1A
# In the past month, have you done any
# freelance or gig-work, either to supplement
# your income or as your main job?

SHED$freelance.or.gig.work <- SHED$GE1A == "Yes"

# E7
# During the past 12 months, have you
# personally experienced discrimination or
# unfair treatment because of your race,
# ethnicity, age, religion, disability status,
# sexual orientation, gender, or gender
# identity?
SHED$experienced.discrimination <- SHED$E7 == "Yes"

# E8_b 
# In the past 12 months, did you personally experience
# discrimination or unfair treatment while
# doing any of the following?
# - Banking or applying for a loan
SHED$experienced.discrimination.in.banking <- SHED$E8_b %in% "Yes"

# xlaptop
# Is R a KP laptop user?
SHED$is.kp.laptop.user <- SHED$xlaptop %in% "Yes"

# devicetype2
# DOV: Device Type - at the end of survey
SHED$respondent.device.type <- relevel(SHED$devicetype2, "WinPC")


SHED <- svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)

# weight_pop used as survey weights, in accordance with suggestion by:
# https://www.federalreserve.gov/consumerscommunities/files/SHED_2021codebook.pdf

Checking correlations between main variables

svyvar.covariance <- svyvar(~ age + is.male + crypto.used.as.payment +
    lacks.bank.account + lacks.credit.card, SHED, na.rm = TRUE)
attr(svyvar.covariance, "var") <- NULL
svyvar.correlation <- cov2cor(as.matrix(svyvar.covariance))

print(round(svyvar.correlation, 3))
##                           age is.male crypto.used.as.payment lacks.bank.account lacks.credit.card
## age                     1.000  -0.024                 -0.070             -0.106            -0.201
## is.male                -0.024   1.000                  0.033              0.011             0.030
## crypto.used.as.payment -0.070   0.033                  1.000              0.035             0.035
## lacks.bank.account     -0.106   0.011                  0.035              1.000             0.364
## lacks.credit.card      -0.201   0.030                  0.035              0.364             1.000
## attr(,"statistic")
## [1] "variance"
corrplot(svyvar.correlation, tl.col = "darkred", tl.srt = 35, 
  method = "shade", number.digits = 2, addshade = "all", diag = FALSE,
         title = "\n\n Correlation Matrix of Financial Marginalization\nand Use of Cryptocurrency as a Means of Payment",
         addCoef.col = "black", type = "lower")

Main results

lacks.bank.account

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + lacks.bank.account, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + lacks.bank.account, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                         Estimate Std. Error t value Pr(>|t|)    
## (Intercept)            -2.913447   0.226073 -12.887  < 2e-16 ***
## age                    -0.031695   0.004137  -7.662 1.97e-14 ***
## is.maleTRUE             0.466379   0.168780   2.763  0.00573 ** 
## lacks.bank.accountTRUE  0.581630   0.285850   2.035  0.04190 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.958345)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                    age     0.969        0.961          0.977                  1
## 2            is.maleTRUE     1.594        1.145          2.219 Indicator variable
## 3 lacks.bank.accountTRUE     1.789        1.022          3.133 Indicator variable

lacks.credit.card

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + lacks.credit.card, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + lacks.credit.card, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           -2.952972   0.234628 -12.586  < 2e-16 ***
## age                   -0.031084   0.004205  -7.392 1.54e-13 ***
## is.maleTRUE            0.466022   0.168684   2.763  0.00574 ** 
## lacks.credit.cardTRUE  0.304096   0.214471   1.418  0.15625    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9559624)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##               predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                   age     0.969        0.961          0.977                  1
## 2           is.maleTRUE     1.594        1.145          2.218 Indicator variable
## 3 lacks.credit.cardTRUE     1.355        0.890          2.064 Indicator variable

Additional results on financial marginalization

rejected.for.credit

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + rejected.for.credit, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + rejected.for.credit, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             -3.186410   0.331091  -9.624  < 2e-16 ***
## age                     -0.028757   0.006194  -4.643 3.54e-06 ***
## is.maleTRUE              0.674391   0.236384   2.853  0.00435 ** 
## rejected.for.creditTRUE  1.149878   0.234934   4.894 1.02e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9739901)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                 predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                     age     0.972        0.960          0.984                  1
## 2             is.maleTRUE     1.963        1.235          3.120 Indicator variable
## 3 rejected.for.creditTRUE     3.158        1.992          5.005 Indicator variable

purchase.non.bank.money.order

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + purchase.non.bank.money.order, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + purchase.non.bank.money.order, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                       -3.021632   0.222077 -13.606  < 2e-16 ***
## age                               -0.032421   0.004118  -7.874 3.75e-15 ***
## is.maleTRUE                        0.481844   0.168482   2.860  0.00425 ** 
## purchase.non.bank.money.orderTRUE  1.092477   0.208685   5.235 1.68e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9680346)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                           predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                               age     0.968        0.960          0.976                  1
## 2                       is.maleTRUE     1.619        1.164          2.253 Indicator variable
## 3 purchase.non.bank.money.orderTRUE     2.982        1.981          4.489 Indicator variable

cash.check.non.bank

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + cash.check.non.bank, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + cash.check.non.bank, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             -3.011138   0.224701 -13.401  < 2e-16 ***
## age                     -0.031117   0.004085  -7.616 2.81e-14 ***
## is.maleTRUE              0.462410   0.168842   2.739  0.00618 ** 
## cash.check.non.bankTRUE  1.098875   0.236800   4.641 3.51e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9459723)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                 predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                     age     0.969        0.962          0.977                  1
## 2             is.maleTRUE     1.588        1.140          2.211 Indicator variable
## 3 cash.check.non.bankTRUE     3.001        1.886          4.773 Indicator variable

take.payday.loan

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + take.payday.loan, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + take.payday.loan, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          -3.056315   0.236834 -12.905  < 2e-16 ***
## age                  -0.030550   0.004233  -7.218 5.61e-13 ***
## is.maleTRUE           0.477396   0.169847   2.811  0.00495 ** 
## take.payday.loanTRUE  1.971401   0.285394   6.908 5.18e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9662311)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##              predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                  age     0.970        0.962          0.978                  1
## 2          is.maleTRUE     1.612        1.155          2.249 Indicator variable
## 3 take.payday.loanTRUE     7.181        4.104         12.564 Indicator variable

take.auto.or.pawn.shop.loan

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + take.auto.or.pawn.shop.loan, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + take.auto.or.pawn.shop.loan, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                     -2.952696   0.224047 -13.179  < 2e-16 ***
## age                             -0.032423   0.004156  -7.802 6.63e-15 ***
## is.maleTRUE                      0.513780   0.169932   3.023   0.0025 ** 
## take.auto.or.pawn.shop.loanTRUE  1.794029   0.314689   5.701 1.22e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9682661)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                         predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                             age     0.968        0.960          0.976                  1
## 2                     is.maleTRUE     1.672        1.198          2.332 Indicator variable
## 3 take.auto.or.pawn.shop.loanTRUE     6.014        3.245         11.144 Indicator variable

take.tax.refund.advance

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + take.tax.refund.advance, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + take.tax.refund.advance, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                 -2.965486   0.221710 -13.376  < 2e-16 ***
## age                         -0.031918   0.004147  -7.697 1.51e-14 ***
## is.maleTRUE                  0.506136   0.169424   2.987  0.00282 ** 
## take.tax.refund.advanceTRUE  2.164352   0.325035   6.659 2.88e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9810652)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                     predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                         age     0.969        0.961          0.976                  1
## 2                 is.maleTRUE     1.659        1.190          2.312 Indicator variable
## 3 take.tax.refund.advanceTRUE     8.709        4.605         16.469 Indicator variable

used.buy.now.pay.later

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + used.buy.now.pay.later, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + used.buy.now.pay.later, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                -3.229942   0.237390 -13.606  < 2e-16 ***
## age                        -0.030738   0.004186  -7.343 2.23e-13 ***
## is.maleTRUE                 0.567811   0.173233   3.278  0.00105 ** 
## used.buy.now.pay.laterTRUE  1.371553   0.191151   7.175 7.65e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9898529)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                    predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                        age     0.970        0.962          0.978                  1
## 2                is.maleTRUE     1.764        1.256          2.478 Indicator variable
## 3 used.buy.now.pay.laterTRUE     3.941        2.710          5.733 Indicator variable

experienced.discrimination.in.banking

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + experienced.discrimination.in.banking, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + experienced.discrimination.in.banking, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                               -2.885342   0.218007 -13.235  < 2e-16 ***
## age                                       -0.032679   0.004104  -7.963 1.84e-15 ***
## is.maleTRUE                                0.466326   0.168406   2.769  0.00563 ** 
## experienced.discrimination.in.bankingTRUE  1.972172   0.372336   5.297 1.20e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.974156)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                                   predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                                       age     0.968        0.960          0.976                  1
## 2                               is.maleTRUE     1.594        1.146          2.218 Indicator variable
## 3 experienced.discrimination.in.bankingTRUE     7.186        3.464         14.910 Indicator variable

perceived.credit.score

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + perceived.credit.score, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + perceived.credit.score, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                      -2.410328   0.296635  -8.126 4.98e-16 ***
## age                              -0.031818   0.005248  -6.062 1.39e-09 ***
## is.maleTRUE                       0.507430   0.189572   2.677  0.00745 ** 
## perceived.credit.scoreVery poor   0.335551   0.411302   0.816  0.41462    
## perceived.credit.scorePoor       -0.081567   0.405853  -0.201  0.84072    
## perceived.credit.scoreGood       -0.652273   0.284365  -2.294  0.02182 *  
## perceived.credit.scoreExcellent  -0.694903   0.251690  -2.761  0.00577 ** 
## perceived.credit.scoreDon’t know -0.875283   0.451036  -1.941  0.05233 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9339766)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                          predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                              age     0.969        0.959          0.979                  1
## 2                      is.maleTRUE     1.661        1.145          2.409 Indicator variable
## 3  perceived.credit.scoreVery poor     1.399        0.625          3.132 Indicator variable
## 4       perceived.credit.scorePoor     0.922        0.416          2.042 Indicator variable
## 5       perceived.credit.scoreGood     0.521        0.298          0.910 Indicator variable
## 6  perceived.credit.scoreExcellent     0.499        0.305          0.817 Indicator variable
## 7 perceived.credit.scoreDon’t know     0.417        0.172          1.009 Indicator variable

General societal marginalization

experienced.discrimination

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + experienced.discrimination, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + experienced.discrimination, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                    -3.004836   0.228625 -13.143  < 2e-16 ***
## age                            -0.031571   0.004086  -7.727 1.19e-14 ***
## is.maleTRUE                     0.501519   0.169039   2.967 0.003014 ** 
## experienced.discriminationTRUE  0.797020   0.214670   3.713 0.000206 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9644662)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                        predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                            age     0.969        0.961          0.977                  1
## 2                    is.maleTRUE     1.651        1.186          2.300 Indicator variable
## 3 experienced.discriminationTRUE     2.219        1.457          3.380 Indicator variable

race

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + race, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + race, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -3.148536   0.241717 -13.026  < 2e-16 ***
## age          -0.031111   0.004158  -7.482 7.86e-14 ***
## is.maleTRUE   0.481631   0.167887   2.869 0.004128 ** 
## raceBlack     0.808073   0.216699   3.729 0.000193 ***
## raceHispanic  0.542806   0.221510   2.450 0.014281 *  
## raceAsian     0.121512   0.397317   0.306 0.759738    
## raceOther    -0.030294   0.462447  -0.066 0.947770    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9471295)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##      predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1          age     0.969        0.961          0.977                  1
## 2  is.maleTRUE     1.619        1.165          2.250 Indicator variable
## 3    raceBlack     2.244        1.467          3.431 Indicator variable
## 4 raceHispanic     1.721        1.115          2.656 Indicator variable
## 5    raceAsian     1.129        0.518          2.460 Indicator variable
## 6    raceOther     0.970        0.392          2.402 Indicator variable

is.noncitizen

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + is.noncitizen, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + is.noncitizen, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       -2.926938   0.239581 -12.217  < 2e-16 ***
## age               -0.031523   0.004323  -7.292 3.27e-13 ***
## is.maleTRUE        0.436785   0.177799   2.457  0.01404 *  
## is.noncitizenTRUE  0.974701   0.375482   2.596  0.00945 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9647507)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##           predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1               age     0.969        0.961          0.977                  1
## 2       is.maleTRUE     1.548        1.092          2.193 Indicator variable
## 3 is.noncitizenTRUE     2.650        1.270          5.533 Indicator variable

lgbtq

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + lgbtq, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + lgbtq, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -2.978567   0.242480 -12.284  < 2e-16 ***
## age                 -0.030611   0.004158  -7.361 1.95e-13 ***
## is.maleTRUE          0.480164   0.183277   2.620  0.00881 ** 
## lgbtqGay or lesbian  0.076089   0.463581   0.164  0.86963    
## lgbtqBisexual        0.346759   0.366939   0.945  0.34468    
## lgbtqSomething else  0.613277   0.535404   1.145  0.25205    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9563273)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##             predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                 age     0.970        0.962          0.978                  1
## 2         is.maleTRUE     1.616        1.129          2.315 Indicator variable
## 3 lgbtqGay or lesbian     1.079        0.435          2.677 Indicator variable
## 4       lgbtqBisexual     1.414        0.689          2.904 Indicator variable
## 5 lgbtqSomething else     1.846        0.646          5.274 Indicator variable

Data quality sanity checks

education.subject

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + education.subject, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + education.subject, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                                                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                                    -2.999353   0.349680  -8.577  < 2e-16 ***
## age                                            -0.031044   0.004627  -6.710 2.06e-11 ***
## is.maleTRUE                                     0.647123   0.211765   3.056  0.00225 ** 
## education.subjectHumanities/arts               -0.023039   0.369258  -0.062  0.95025    
## education.subjectSocial/behavioral sciences    -0.088099   0.396489  -0.222  0.82416    
## education.subjectLife sciences                  0.454106   0.582217   0.780  0.43543    
## education.subjectPhysical sciences/math         0.667644   0.451933   1.477  0.13963    
## education.subjectComputer/information sciences  0.566129   0.305065   1.856  0.06352 .  
## education.subjectEngineering                   -0.061159   0.365813  -0.167  0.86723    
## education.subjectEducation                     -1.007184   0.641422  -1.570  0.11640    
## education.subjectHealth                        -0.318826   0.380608  -0.838  0.40223    
## education.subjectLaw                           -0.346608   0.519753  -0.667  0.50487    
## education.subjectVocational/technical training -0.668446   0.544420  -1.228  0.21955    
## education.subjectUndeclared                    -0.260800   0.517377  -0.504  0.61422    
## education.subjectOther                         -0.241427   0.406223  -0.594  0.55231    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.8916928)
## 
## Number of Fisher Scoring iterations: 8
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                                         predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                                             age     0.969        0.961          0.978                  1
## 2                                     is.maleTRUE     1.910        1.261          2.893 Indicator variable
## 3                education.subjectHumanities/arts     0.977        0.474          2.015 Indicator variable
## 4     education.subjectSocial/behavioral sciences     0.916        0.421          1.992 Indicator variable
## 5                  education.subjectLife sciences     1.575        0.503          4.930 Indicator variable
## 6         education.subjectPhysical sciences/math     1.950        0.804          4.728 Indicator variable
## 7  education.subjectComputer/information sciences     1.761        0.969          3.203 Indicator variable
## 8                    education.subjectEngineering     0.941        0.459          1.927 Indicator variable
## 9                      education.subjectEducation     0.365        0.104          1.284 Indicator variable
## 10                        education.subjectHealth     0.727        0.345          1.533 Indicator variable
## 11                           education.subjectLaw     0.707        0.255          1.959 Indicator variable
## 12 education.subjectVocational/technical training     0.513        0.176          1.490 Indicator variable
## 13                    education.subjectUndeclared     0.770        0.279          2.124 Indicator variable
## 14                         education.subjectOther     0.786        0.354          1.742 Indicator variable

job.industry

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + job.industry, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + job.industry, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                                                                                                                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                                                                                                        -2.854060   0.340815  -8.374  < 2e-16 ***
## age                                                                                                                -0.033280   0.004306  -7.728 1.18e-14 ***
## is.maleTRUE                                                                                                         0.381146   0.186339   2.045   0.0408 *  
## job.industry-1                                                                                                    -11.507214   0.382080 -30.117  < 2e-16 ***
## job.industry-2                                                                                                      0.066810   0.360007   0.186   0.8528    
## job.industryFarming/Agriculture, Forestry, Fishing and Hunting, and Animal Production                               0.753267   0.731523   1.030   0.3032    
## job.industryFinance, Banking, and Insurance                                                                        -0.052153   0.486781  -0.107   0.9147    
## job.industryReal Estate and Property Management                                                                     0.460033   0.697996   0.659   0.5099    
## job.industryProfessional, Scientific, Technical, and Business Services                                              0.362678   0.380195   0.954   0.3401    
## job.industryManagement of Companies and Enterprises                                                                 0.390625   1.063713   0.367   0.7135    
## job.industryEducation and Tutoring                                                                                 -0.730517   0.542590  -1.346   0.1782    
## job.industryHealth Care (including Elder Care, Home Health Care)                                                   -0.110082   0.422465  -0.261   0.7944    
## job.industryArts, Entertainment, and Recreation                                                                     0.383444   0.575453   0.666   0.5052    
## job.industryAccommodation and Food Services                                                                        -0.004982   0.629938  -0.008   0.9937    
## job.industryMining, Quarrying, and Oil and Gas Extraction                                                          -0.182107   1.071871  -0.170   0.8651    
## job.industryPublic Administration                                                                                   0.375866   0.606949   0.619   0.5358    
## job.industryArmed Forces                                                                                            0.252194   0.784939   0.321   0.7480    
## job.industryUtilities, Waste Management, and Remediation Services_(22)                                             -1.339318   1.057590  -1.266   0.2054    
## job.industryAdministrative and Support Services (such as Call Centers, Security, Landscaping, and Janitorial)      -0.540011   0.678967  -0.795   0.4264    
## job.industryChild Day Care Services                                                                                -0.519336   1.063179  -0.488   0.6252    
## job.industryRepairs and Maintenance                                                                                 0.911384   0.575837   1.583   0.1135    
## job.industryPersonal Services (including Beauty, Pet Care, and Household)                                           0.048350   0.789374   0.061   0.9512    
## job.industryCommunity/Non-Profit Organizations (including Religious and Political Organizations)                    0.203254   0.619093   0.328   0.7427    
## job.industryConstruction and Specialty Contractors (such as Plumbing and Electrical)                               -0.235479   0.568282  -0.414   0.6786    
## job.industryFactory, Manufacturing, and Woodworking                                                                -0.123598   0.502171  -0.246   0.8056    
## job.industryWholesale Trade                                                                                         1.227697   0.616998   1.990   0.0466 *  
## job.industryDelivery Services, Warehousing, and Transportation (including Air, Rail, Water, Truck, and Passenger)   0.448454   0.493363   0.909   0.3634    
## job.industryInformation (including Publishing, Media, Telecom, Internet Search, and Social Networking)              0.408421   0.485916   0.841   0.4006    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9747189)
## 
## Number of Fisher Scoring iterations: 14
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                                                                                                            predictor oddsratio ci_low (2.5) ci_high (97.5)
## 1                                                                                                                age     0.967        0.959          0.975
## 2                                                                                                        is.maleTRUE     1.464        1.016          2.109
## 3                                                                                                     job.industry-1     0.000        0.000          0.000
## 4                                                                                                     job.industry-2     1.069        0.528          2.165
## 5                              job.industryFarming/Agriculture, Forestry, Fishing and Hunting, and Animal Production     2.124        0.506          8.910
## 6                                                                        job.industryFinance, Banking, and Insurance     0.949        0.366          2.465
## 7                                                                    job.industryReal Estate and Property Management     1.584        0.403          6.223
## 8                                             job.industryProfessional, Scientific, Technical, and Business Services     1.437        0.682          3.028
## 9                                                                job.industryManagement of Companies and Enterprises     1.478        0.184         11.890
## 10                                                                                job.industryEducation and Tutoring     0.482        0.166          1.395
## 11                                                  job.industryHealth Care (including Elder Care, Home Health Care)     0.896        0.391          2.050
## 12                                                                   job.industryArts, Entertainment, and Recreation     1.467        0.475          4.533
## 13                                                                       job.industryAccommodation and Food Services     0.995        0.289          3.421
## 14                                                         job.industryMining, Quarrying, and Oil and Gas Extraction     0.834        0.102          6.814
## 15                                                                                 job.industryPublic Administration     1.456        0.443          4.785
## 16                                                                                          job.industryArmed Forces     1.287        0.276          5.994
## 17                                            job.industryUtilities, Waste Management, and Remediation Services_(22)     0.262        0.033          2.083
## 18     job.industryAdministrative and Support Services (such as Call Centers, Security, Landscaping, and Janitorial)     0.583        0.154          2.205
## 19                                                                               job.industryChild Day Care Services     0.595        0.074          4.781
## 20                                                                               job.industryRepairs and Maintenance     2.488        0.805          7.692
## 21                                         job.industryPersonal Services (including Beauty, Pet Care, and Household)     1.050        0.223          4.932
## 22                  job.industryCommunity/Non-Profit Organizations (including Religious and Political Organizations)     1.225        0.364          4.124
## 23                              job.industryConstruction and Specialty Contractors (such as Plumbing and Electrical)     0.790        0.259          2.407
## 24                                                               job.industryFactory, Manufacturing, and Woodworking     0.884        0.330          2.365
## 25                                                                                       job.industryWholesale Trade     3.413        1.018         11.440
## 26 job.industryDelivery Services, Warehousing, and Transportation (including Air, Rail, Water, Truck, and Passenger)     1.566        0.595          4.119
## 27            job.industryInformation (including Publishing, Media, Telecom, Internet Search, and Social Networking)     1.504        0.580          3.900
##             increment
## 1                   1
## 2  Indicator variable
## 3  Indicator variable
## 4  Indicator variable
## 5  Indicator variable
## 6  Indicator variable
## 7  Indicator variable
## 8  Indicator variable
## 9  Indicator variable
## 10 Indicator variable
## 11 Indicator variable
## 12 Indicator variable
## 13 Indicator variable
## 14 Indicator variable
## 15 Indicator variable
## 16 Indicator variable
## 17 Indicator variable
## 18 Indicator variable
## 19 Indicator variable
## 20 Indicator variable
## 21 Indicator variable
## 22 Indicator variable
## 23 Indicator variable
## 24 Indicator variable
## 25 Indicator variable
## 26 Indicator variable
## 27 Indicator variable

job.occupation

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + job.occupation, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + job.occupation, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                                                                                                                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                                                                                                             -2.859317   0.290095  -9.856  < 2e-16 ***
## age                                                                                                                     -0.031407   0.004312  -7.283 3.48e-13 ***
## is.maleTRUE                                                                                                              0.360765   0.179090   2.014  0.04399 *  
## job.occupationRefused                                                                                                    0.075921   1.047868   0.072  0.94224    
## job.occupationManagement                                                                                                -0.089604   0.349829  -0.256  0.79785    
## job.occupationComputer and Mathematical                                                                                  0.805900   0.293052   2.750  0.00597 ** 
## job.occupationArchitecture and Engineering                                                                               0.441968   0.481025   0.919  0.35822    
## job.occupationLife, Physical, and Social Sciences                                                                      -13.665891   0.211452 -64.629  < 2e-16 ***
## job.occupationCommunity and Social Services                                                                              0.348845   0.744372   0.469  0.63933    
## job.occupationLawyer, judge                                                                                              0.476803   0.678924   0.702  0.48251    
## job.occupationTeacher, college and university                                                                          -12.647983   1.020703 -12.391  < 2e-16 ***
## job.occupationHealth Technologist or Technician (such as paramedic, lab technician)                                      0.177896   0.638330   0.279  0.78049    
## job.occupationHealth Care Support (such as nursing aide, orderly, dental assistant)                                     -0.040914   0.797085  -0.051  0.95906    
## job.occupationProtective Service                                                                                        -1.213895   1.029386  -1.179  0.23833    
## job.occupationFood Preparation and Serving                                                                              -0.349612   0.683524  -0.511  0.60902    
## job.occupationBuilding and Grounds Cleaning and Maintenance                                                              0.987466   0.703185   1.404  0.16026    
## job.occupationPersonal Care and Service                                                                                 -0.258920   0.755418  -0.343  0.73179    
## job.occupationOffice and Administrative Support                                                                         -0.763668   0.578523  -1.320  0.18685    
## job.occupationFarming, Forestry, and Fishing                                                                             1.330953   0.808627   1.646  0.09980 .  
## job.occupationConstruction and Extraction                                                                                0.060967   0.666060   0.092  0.92707    
## job.occupationInstallation, Maintenance, and Repair                                                                      0.020352   0.523736   0.039  0.96900    
## job.occupationPrecision Production (such as machinist, welder, baker, printer, tailor)                                  -0.213162   0.745985  -0.286  0.77508    
## job.occupationTransportation and Material Moving                                                                        -0.887770   0.738712  -1.202  0.22947    
## job.occupationArmed Services                                                                                           -13.939322   0.289202 -48.199  < 2e-16 ***
## job.occupationOther (Please specify)                                                                                    -0.383127   0.349530  -1.096  0.27305    
## job.occupationBusiness Operations (including Marketing)                                                                  0.498942   0.397591   1.255  0.20953    
## job.occupationFinancial Operations or Financial Services (including Financial Advisor, Broker)                           0.300696   0.467979   0.643  0.52053    
## job.occupationEducation, Training, and Library                                                                          -0.140354   0.454960  -0.308  0.75771    
## job.occupationArts, Design, Entertainment, Sports, and Media                                                             1.103976   0.438103   2.520  0.01175 *  
## job.occupationHealth Diagnosing or Treating Practitioner (such as physician, nurse, dentist, veterinarian, pharmacist)  -0.813343   0.735419  -1.106  0.26877    
## job.occupationSales                                                                                                     -0.013234   0.390589  -0.034  0.97297    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9684664)
## 
## Number of Fisher Scoring iterations: 16
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                                                                                                                 predictor oddsratio ci_low (2.5) ci_high (97.5)
## 1                                                                                                                     age     0.969        0.961          0.977
## 2                                                                                                             is.maleTRUE     1.434        1.010          2.038
## 3                                                                                                   job.occupationRefused     1.079        0.138          8.414
## 4                                                                                                job.occupationManagement     0.914        0.461          1.815
## 5                                                                                 job.occupationComputer and Mathematical     2.239        1.260          3.976
## 6                                                                              job.occupationArchitecture and Engineering     1.556        0.606          3.994
## 7                                                                       job.occupationLife, Physical, and Social Sciences     0.000        0.000          0.000
## 8                                                                             job.occupationCommunity and Social Services     1.417        0.329          6.098
## 9                                                                                             job.occupationLawyer, judge     1.611        0.426          6.096
## 10                                                                          job.occupationTeacher, college and university     0.000        0.000          0.000
## 11                                    job.occupationHealth Technologist or Technician (such as paramedic, lab technician)     1.195        0.342          4.175
## 12                                    job.occupationHealth Care Support (such as nursing aide, orderly, dental assistant)     0.960        0.201          4.579
## 13                                                                                       job.occupationProtective Service     0.297        0.039          2.234
## 14                                                                             job.occupationFood Preparation and Serving     0.705        0.185          2.692
## 15                                                            job.occupationBuilding and Grounds Cleaning and Maintenance     2.684        0.676         10.653
## 16                                                                                job.occupationPersonal Care and Service     0.772        0.176          3.393
## 17                                                                        job.occupationOffice and Administrative Support     0.466        0.150          1.448
## 18                                                                           job.occupationFarming, Forestry, and Fishing     3.785        0.776         18.467
## 19                                                                              job.occupationConstruction and Extraction     1.063        0.288          3.922
## 20                                                                    job.occupationInstallation, Maintenance, and Repair     1.021        0.366          2.849
## 21                                 job.occupationPrecision Production (such as machinist, welder, baker, printer, tailor)     0.808        0.187          3.487
## 22                                                                       job.occupationTransportation and Material Moving     0.412        0.097          1.751
## 23                                                                                           job.occupationArmed Services     0.000        0.000          0.000
## 24                                                                                   job.occupationOther (Please specify)     0.682        0.344          1.353
## 25                                                                job.occupationBusiness Operations (including Marketing)     1.647        0.755          3.590
## 26                         job.occupationFinancial Operations or Financial Services (including Financial Advisor, Broker)     1.351        0.540          3.380
## 27                                                                         job.occupationEducation, Training, and Library     0.869        0.356          2.120
## 28                                                           job.occupationArts, Design, Entertainment, Sports, and Media     3.016        1.278          7.119
## 29 job.occupationHealth Diagnosing or Treating Practitioner (such as physician, nurse, dentist, veterinarian, pharmacist)     0.443        0.105          1.874
## 30                                                                                                    job.occupationSales     0.987        0.459          2.122
##             increment
## 1                   1
## 2  Indicator variable
## 3  Indicator variable
## 4  Indicator variable
## 5  Indicator variable
## 6  Indicator variable
## 7  Indicator variable
## 8  Indicator variable
## 9  Indicator variable
## 10 Indicator variable
## 11 Indicator variable
## 12 Indicator variable
## 13 Indicator variable
## 14 Indicator variable
## 15 Indicator variable
## 16 Indicator variable
## 17 Indicator variable
## 18 Indicator variable
## 19 Indicator variable
## 20 Indicator variable
## 21 Indicator variable
## 22 Indicator variable
## 23 Indicator variable
## 24 Indicator variable
## 25 Indicator variable
## 26 Indicator variable
## 27 Indicator variable
## 28 Indicator variable
## 29 Indicator variable
## 30 Indicator variable

risk.tolerance

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + risk.tolerance, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + risk.tolerance, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -3.644821   0.290448 -12.549  < 2e-16 ***
## age            -0.032445   0.004127  -7.862 4.10e-15 ***
## is.maleTRUE     0.320517   0.169451   1.891   0.0586 .  
## risk.tolerance  0.153390   0.035631   4.305 1.68e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 1.00971)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1, risk.tolerance = 1))
##        predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1            age     0.968        0.960          0.976                  1
## 2    is.maleTRUE     1.378        0.988          1.921 Indicator variable
## 3 risk.tolerance     1.166        1.087          1.250                  1

Miscellaneous

education.level

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + education.level, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + education.level, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                                                                                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                                                                         -3.004087   0.325355  -9.233  < 2e-16 ***
## age                                                                                 -0.033604   0.004232  -7.941 2.19e-15 ***
## is.maleTRUE                                                                          0.479580   0.169894   2.823  0.00477 ** 
## education.levelLess than high school degree                                          0.909354   0.354585   2.565  0.01034 *  
## education.levelSome college but no degree (including currently enrolled in college) -0.018952   0.300965  -0.063  0.94979    
## education.levelCertificate or technical degree                                       0.736750   0.365843   2.014  0.04405 *  
## education.levelAssociate degree                                                      0.321663   0.324606   0.991  0.32174    
## education.levelBachelor’s degree                                                     0.308002   0.263375   1.169  0.24225    
## education.levelMaster’s degree                                                      -0.352900   0.358475  -0.984  0.32491    
## education.levelProfessional degree (e.g., MBA, MD, JD)                               0.120345   0.444589   0.271  0.78664    
## education.levelDoctoral degree                                                       0.426466   0.538741   0.792  0.42861    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9733736)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                                                                              predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                                                                                  age     0.967        0.959          0.975                  1
## 2                                                                          is.maleTRUE     1.615        1.158          2.254 Indicator variable
## 3                                          education.levelLess than high school degree     2.483        1.239          4.975 Indicator variable
## 4  education.levelSome college but no degree (including currently enrolled in college)     0.981        0.544          1.770 Indicator variable
## 5                                       education.levelCertificate or technical degree     2.089        1.020          4.280 Indicator variable
## 6                                                      education.levelAssociate degree     1.379        0.730          2.606 Indicator variable
## 7                                                     education.levelBachelor’s degree     1.361        0.812          2.280 Indicator variable
## 8                                                       education.levelMaster’s degree     0.703        0.348          1.419 Indicator variable
## 9                               education.levelProfessional degree (e.g., MBA, MD, JD)     1.128        0.472          2.696 Indicator variable
## 10                                                      education.levelDoctoral degree     1.532        0.533          4.404 Indicator variable

income.category

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + income.category, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + income.category, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                         -3.273818   0.416856  -7.854 4.39e-15 ***
## age                                 -0.030726   0.004441  -6.920 4.77e-12 ***
## is.maleTRUE                          0.468895   0.169410   2.768  0.00565 ** 
## income.category$1 to $4,999          0.678200   0.462588   1.466  0.14265    
## income.category$5,000 to $14,999     0.675499   0.476955   1.416  0.15672    
## income.category$15,000 to $24,999    0.927493   0.446426   2.078  0.03777 *  
## income.category$25,000 to $39,999    0.318584   0.481331   0.662  0.50806    
## income.category$40,000 to $49,999    0.372418   0.546639   0.681  0.49570    
## income.category$50,000 to $74,999    0.278145   0.453145   0.614  0.53935    
## income.category$75,000 to $99,999   -0.095317   0.496997  -0.192  0.84791    
## income.category$100,000 to $149,999  0.016235   0.462073   0.035  0.97197    
## income.category$150,000 to $199,999  0.383789   0.466797   0.822  0.41099    
## income.category$200,000 or higher    0.513793   0.467091   1.100  0.27136    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9338147)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                              predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                                  age     0.970        0.961          0.978                  1
## 2                          is.maleTRUE     1.598        1.147          2.228 Indicator variable
## 3          income.category$1 to $4,999     1.970        0.796          4.879 Indicator variable
## 4     income.category$5,000 to $14,999     1.965        0.772          5.005 Indicator variable
## 5    income.category$15,000 to $24,999     2.528        1.054          6.065 Indicator variable
## 6    income.category$25,000 to $39,999     1.375        0.535          3.533 Indicator variable
## 7    income.category$40,000 to $49,999     1.451        0.497          4.237 Indicator variable
## 8    income.category$50,000 to $74,999     1.321        0.543          3.210 Indicator variable
## 9    income.category$75,000 to $99,999     0.909        0.343          2.408 Indicator variable
## 10 income.category$100,000 to $149,999     1.016        0.411          2.514 Indicator variable
## 11 income.category$150,000 to $199,999     1.468        0.588          3.665 Indicator variable
## 12   income.category$200,000 or higher     1.672        0.669          4.176 Indicator variable

total.household.savings

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + total.household.savings, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + total.household.savings, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                                             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                                -3.556369   0.421537  -8.437  < 2e-16 ***
## age                                        -0.030760   0.005611  -5.482  4.3e-08 ***
## is.maleTRUE                                 0.518701   0.190683   2.720  0.00654 ** 
## total.household.savingsUnder $50,000        0.763129   0.340146   2.244  0.02488 *  
## total.household.savings$50,000 - $99,999    0.704741   0.403520   1.746  0.08076 .  
## total.household.savings$250,000 - $499,999  0.042244   0.501924   0.084  0.93293    
## total.household.savings$500,000 - $999,999  0.567264   0.500600   1.133  0.25717    
## total.household.savings$1,000,000 or more   0.756296   0.453426   1.668  0.09536 .  
## total.household.savingsNot sure             0.356281   0.501123   0.711  0.47712    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9623409)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                                    predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                                        age     0.970        0.959          0.980                  1
## 2                                is.maleTRUE     1.680        1.156          2.441 Indicator variable
## 3       total.household.savingsUnder $50,000     2.145        1.101          4.178 Indicator variable
## 4   total.household.savings$50,000 - $99,999     2.023        0.917          4.463 Indicator variable
## 5 total.household.savings$250,000 - $499,999     1.043        0.390          2.790 Indicator variable
## 6 total.household.savings$500,000 - $999,999     1.763        0.661          4.705 Indicator variable
## 7  total.household.savings$1,000,000 or more     2.130        0.876          5.182 Indicator variable
## 8            total.household.savingsNot sure     1.428        0.535          3.814 Indicator variable

overall.financial.wellbeing

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + overall.financial.wellbeing, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + overall.financial.wellbeing, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                                                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                                   -2.268126   0.350735  -6.467 1.04e-10 ***
## age                                           -0.031841   0.004166  -7.643 2.29e-14 ***
## is.maleTRUE                                    0.484261   0.168554   2.873  0.00407 ** 
## overall.financial.wellbeingJust getting by    -0.317562   0.311349  -1.020  0.30777    
## overall.financial.wellbeingDoing okay         -0.806923   0.296748  -2.719  0.00655 ** 
## overall.financial.wellbeingLiving comfortably -0.691068   0.296050  -2.334  0.01960 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9535067)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                                       predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                                           age     0.969        0.961          0.977                  1
## 2                                   is.maleTRUE     1.623        1.166          2.258 Indicator variable
## 3    overall.financial.wellbeingJust getting by     0.728        0.395          1.340 Indicator variable
## 4         overall.financial.wellbeingDoing okay     0.446        0.249          0.798 Indicator variable
## 5 overall.financial.wellbeingLiving comfortably     0.501        0.280          0.895 Indicator variable

received.food.stamps

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + received.food.stamps, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + received.food.stamps, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             -3.089908   0.237432 -13.014  < 2e-16 ***
## age                     -0.031579   0.004243  -7.442 1.06e-13 ***
## is.maleTRUE              0.530637   0.168799   3.144  0.00167 ** 
## received.food.stampsYes  1.018607   0.197450   5.159 2.53e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9422187)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                 predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                     age     0.969        0.961          0.977                  1
## 2             is.maleTRUE     1.700        1.221          2.367 Indicator variable
## 3 received.food.stampsYes     2.769        1.881          4.078 Indicator variable

life.satisfaction

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + life.satisfaction, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + life.satisfaction, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       -2.083025   0.307205  -6.781 1.25e-11 ***
## age               -0.031802   0.004047  -7.858 4.23e-15 ***
## is.maleTRUE        0.489125   0.168066   2.910  0.00362 ** 
## life.satisfaction -0.110727   0.034123  -3.245  0.00118 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9583323)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1, life.satisfaction = 1))
##           predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1               age     0.969        0.961          0.976                  1
## 2       is.maleTRUE     1.631        1.173          2.267 Indicator variable
## 3 life.satisfaction     0.895        0.837          0.957                  1

employer.type

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + employer.type, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + employer.type, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                                                                                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                                                                             -2.865859   0.239651 -11.958  < 2e-16 ***
## age                                                                                     -0.032834   0.004279  -7.674  1.8e-14 ***
## is.maleTRUE                                                                              0.457349   0.172355   2.654  0.00798 ** 
## employer.typeNot asked                                                                   0.019641   0.223010   0.088  0.92982    
## employer.typeRefused                                                                   -10.738646   0.432384 -24.836  < 2e-16 ***
## employer.typeGovernment                                                                 -0.071288   0.273183  -0.261  0.79413    
## employer.typeNon-profit organization including tax exempt and charitable organizations  -0.194815   0.337976  -0.576  0.56434    
## employer.typeSelf-employed                                                               0.513342   0.244855   2.097  0.03606 *  
## employer.typeWorking in the family business                                              0.679120   0.593724   1.144  0.25272    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9561779)
## 
## Number of Fisher Scoring iterations: 13
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                                                                                predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                                                                                    age     0.968        0.960          0.976                  1
## 2                                                                            is.maleTRUE     1.580        1.127          2.215 Indicator variable
## 3                                                                 employer.typeNot asked     1.020        0.659          1.579 Indicator variable
## 4                                                                   employer.typeRefused     0.000        0.000          0.000 Indicator variable
## 5                                                                employer.typeGovernment     0.931        0.545          1.591 Indicator variable
## 6 employer.typeNon-profit organization including tax exempt and charitable organizations     0.823        0.424          1.596 Indicator variable
## 7                                                             employer.typeSelf-employed     1.671        1.034          2.700 Indicator variable
## 8                                            employer.typeWorking in the family business     1.972        0.616          6.315 Indicator variable

employer.type = Self-employed & job.occupation = Computer and Mathematical

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male +
    I(employer.type == "Self-employed") * I(job.occupation == "Computer and Mathematical"), 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + I(employer.type == 
##     "Self-employed") * I(job.occupation == "Computer and Mathematical"), 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                                                                                               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                                                                                  -2.926030   0.223009 -13.121  < 2e-16 ***
## age                                                                                          -0.032243   0.004112  -7.841 4.86e-15 ***
## is.maleTRUE                                                                                   0.402155   0.171206   2.349  0.01884 *  
## I(employer.type == "Self-employed")TRUE                                                       0.535333   0.238590   2.244  0.02487 *  
## I(job.occupation == "Computer and Mathematical")TRUE                                          0.828596   0.255330   3.245  0.00118 ** 
## I(employer.type == "Self-employed")TRUE:I(job.occupation == "Computer and Mathematical")TRUE -0.030258   0.800649  -0.038  0.96985    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9686841)
## 
## Number of Fisher Scoring iterations: 7
print(or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1)))
##                                                                                      predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                                                                                          age     0.968        0.960          0.976                  1
## 2                                                                                  is.maleTRUE     1.495        1.069          2.091 Indicator variable
## 3                                                      I(employer.type == "Self-employed")TRUE     1.708        1.070          2.726 Indicator variable
## 4                                         I(job.occupation == "Computer and Mathematical")TRUE     2.290        1.388          3.778 Indicator variable
## 5 I(employer.type == "Self-employed")TRUE:I(job.occupation == "Computer and Mathematical")TRUE     0.970        0.202          4.661 Indicator variable

informal.selling.of.goods

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + informal.selling.of.goods, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + informal.selling.of.goods, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                   -3.121719   0.235807 -13.238  < 2e-16 ***
## age                           -0.030387   0.004167  -7.292 3.24e-13 ***
## is.maleTRUE                    0.507850   0.168997   3.005  0.00266 ** 
## informal.selling.of.goodsTRUE  1.008002   0.203127   4.962 7.06e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9585714)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                       predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                           age     0.970        0.962          0.978                  1
## 2                   is.maleTRUE     1.662        1.193          2.314 Indicator variable
## 3 informal.selling.of.goodsTRUE     2.740        1.840          4.080 Indicator variable

freelance.or.gig.work

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + freelance.or.gig.work, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + freelance.or.gig.work, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)               -3.056709   0.228730 -13.364  < 2e-16 ***
## age                       -0.030618   0.004081  -7.502 6.75e-14 ***
## is.maleTRUE                0.465822   0.168194   2.770  0.00562 ** 
## freelance.or.gig.workTRUE  1.218055   0.226264   5.383 7.45e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.973539)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                   predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                       age     0.970        0.962          0.978                  1
## 2               is.maleTRUE     1.593        1.146          2.216 Indicator variable
## 3 freelance.or.gig.workTRUE     3.381        2.170          5.268 Indicator variable

resides.in.metro.statistical.area

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + resides.in.metro.statistical.area, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + resides.in.metro.statistical.area, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                           -2.717748   0.305226  -8.904  < 2e-16 ***
## age                                   -0.032861   0.004008  -8.199 2.68e-16 ***
## is.maleTRUE                            0.474676   0.168284   2.821   0.0048 ** 
## resides.in.metro.statistical.areaTRUE -0.116266   0.245596  -0.473   0.6359    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9614606)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                               predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                                   age     0.968        0.960          0.975                  1
## 2                           is.maleTRUE     1.607        1.156          2.236 Indicator variable
## 3 resides.in.metro.statistical.areaTRUE     0.890        0.550          1.441 Indicator variable

respondent.device.type

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + respondent.device.type, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + respondent.device.type, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                             -2.918718   0.310897  -9.388  < 2e-16 ***
## age                                     -0.031673   0.004376  -7.237 4.87e-13 ***
## is.maleTRUE                              0.474081   0.176238   2.690  0.00716 ** 
## respondent.device.typeiPad               0.103007   0.620870   0.166  0.86823    
## respondent.device.typeiPod               2.970426   1.128025   2.633  0.00847 ** 
## respondent.device.typeiPhone             0.066980   0.245593   0.273  0.78507    
## respondent.device.typeMac               -0.299168   0.312683  -0.957  0.33870    
## respondent.device.typeChromeBook        -0.691715   1.016032  -0.681  0.49601    
## respondent.device.typeAndroidTablet      0.392972   0.481166   0.817  0.41411    
## respondent.device.typeAndroidPhone       0.182044   0.218314   0.834  0.40438    
## respondent.device.typeTabletOther      -13.379916   1.021910 -13.093  < 2e-16 ***
## respondent.device.typeKindleFireTablet -13.051119   0.219470 -59.467  < 2e-16 ***
## respondent.device.typeothers             0.505531   0.618699   0.817  0.41390    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9576177)
## 
## Number of Fisher Scoring iterations: 16
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##                                 predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                                     age     0.969        0.961          0.977                  1
## 2                             is.maleTRUE     1.607        1.137          2.269 Indicator variable
## 3              respondent.device.typeiPad     1.108        0.328          3.743 Indicator variable
## 4              respondent.device.typeiPod    19.500        2.137        177.957 Indicator variable
## 5            respondent.device.typeiPhone     1.069        0.661          1.730 Indicator variable
## 6               respondent.device.typeMac     0.741        0.402          1.369 Indicator variable
## 7        respondent.device.typeChromeBook     0.501        0.068          3.669 Indicator variable
## 8     respondent.device.typeAndroidTablet     1.481        0.577          3.804 Indicator variable
## 9      respondent.device.typeAndroidPhone     1.200        0.782          1.840 Indicator variable
## 10      respondent.device.typeTabletOther     0.000        0.000          0.000 Indicator variable
## 11 respondent.device.typeKindleFireTablet     0.000        0.000          0.000 Indicator variable
## 12           respondent.device.typeothers     1.658        0.493          5.575 Indicator variable

is.kp.laptop.user

svyglm.fit <- svyglm(crypto.used.as.payment ~ age + is.male + is.kp.laptop.user, 
  SHED, family = stats::quasibinomial(link = "logit"))
summary(svyglm.fit)
## 
## Call:
## svyglm(formula = crypto.used.as.payment ~ age + is.male + is.kp.laptop.user, 
##     design = SHED, family = stats::quasibinomial(link = "logit"))
## 
## Survey design:
## svydesign(ids = ~0, data = SHED, weights = SHED$weight_pop)
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           -2.826935   0.216554 -13.054  < 2e-16 ***
## age                   -0.032808   0.004015  -8.171 3.37e-16 ***
## is.maleTRUE            0.472575   0.168431   2.806  0.00503 ** 
## is.kp.laptop.userTRUE  0.247685   0.471514   0.525  0.59939    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.9638515)
## 
## Number of Fisher Scoring iterations: 7
or_svyglm(SHED$variables, svyglm.fit, incr = list(age = 1))
##               predictor oddsratio ci_low (2.5) ci_high (97.5)          increment
## 1                   age     0.968        0.960          0.975                  1
## 2           is.maleTRUE     1.604        1.153          2.232 Indicator variable
## 3 is.kp.laptop.userTRUE     1.281        0.508          3.228 Indicator variable