Survey Dud Detector
Apply methods to detect bad responses in surveys.
Detect Straightlining
Straightlining involves someone answering the same item on a scale for all the questions (e.g., saying "Strongly Agree" to everything).
from survey_dud_detector import detect_straightlining
likert_cols = [c for c in mfa.columns if 'agree' in c or 'would' in c or 'favorable' in c]
straightlining = detect_straightlining(df[likert_cols])
# Examine incidence of straightlining (results are normalized to % of questions examined)
print(straightlining.value_counts())
# Drop everyone who perfectly straightlined
df = df[straightlining < 1]
Multiple Low Incidence Detection
Multiple low incidence involves someone answering multiple questions with an unlikely answer (e.g., saying they are a Native American or that they are non-binary). Obviously unlikely answers themselves are not an issue, but multiple low incidence can indicate someone might be trolling (i.e., pretenting to be a non-binary Native American who is Very Conservative and earns over $150K).
demographics = ['gender', 'race', 'education', 'urban_rural', 'politics', 'income', 'age', 'vote2016']
# Detect low incidence - the threshold defines what rarity you want to count as "low incidence" (0.04 means anything with 4% or less occurance will be defined as "low incidence")
low_incidence_counts = detect_low_incidence(df[demographics], low_incidence_threshold=0.04)
# Examine incidence of straightlining (results are number of low incidence answers)
print(low_incidence_counts.value_counts())
# It might be good to look at the values of people with a high number of low incidence answers
# just in case this is actually legitimate.
print(df[low_incidence_counts >= 3])
# Drop everyone who gave three or more low incidence answers
df = df[low_incidence_counts < 3]
Installation
pip3 install survey_dud_detector
Release files for survey-dud-detector 0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| survey_dud_detector-0.2.tar.gz | 2.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| survey_dud_detector-0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 7.0 kB
Release files / survey_dud_detector-0.2.tar.gz
| Download URL | survey_dud_detector-0.2.tar.gz |
|---|---|
| Size | 2.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b3a02e572578548259da8c0330344979b3dd8a2d7c901f78ec88eb23f632c2f5
|
|
BLAKE2b-256 checksum How to use checksums |
9d3359aa7f4c12a04bc42ce1294c99f31d7722fac7b63771700d0dbcd1e78cbf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6
|
Release files / survey_dud_detector-0.2-py3-none-any.whl
| Download URL | survey_dud_detector-0.2-py3-none-any.whl |
|---|---|
| Size | 4.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
305604c798a701f21698470028ca2f2339779641290c2cc9e2f1d052e1b9e307
|
|
BLAKE2b-256 checksum How to use checksums |
28b4408a83a941e2f66536bc21d02c71aa40659448b6479be314f5c99d5ef4f0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6
|