Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Psychometric Properties of a German Version of the Emotion Regulation Questionnaire-Short Form (ERQ-S): Evidence from Community and Patient Samples #436

Closed
ben-domingue opened this issue Sep 20, 2024 · 23 comments
Assignees

Comments

@ben-domingue
Copy link
Owner

data seems potentially quite messy. if so, let's backburner it. [might be that there code can be used to convert to something more straightfwd?]
https://osf.io/n26mb/

License: CC-By Attribution 4.0 International

@KingArthur0205
Copy link
Collaborator

KingArthur0205 commented Nov 27, 2024

Emotion Regulation Questionnaire-Short Form (ERQ-S)
This questionnaire has many sub-scales taken by 15740 participants:

  1. identity: 4 items on a 7-point Likert scale.(0-6)
  2. Stree Related 5-point Likert scale.(0-4):
    1. perceived_stress_scale: 10 items
    2. primary_stressor: 4 items
    3. secondary_stressor: 4 items
    4. secondary_stressor_relationship: 1 item
    5. seoncdary_stressor_occupation: 4 items
    6. secondary_stressor_student: 2 items
    7. secondary_stressor_children: 2 items
    8. secondary_stressor_others: 1 item.
  3. perceived_support: 3 items on a 7-point Likert scale.(0-6)
  4. Staying Safe & Compliance:
    1. compliance: 8 items on a 7-point Likert scale.
    2. social_influence: 8 items on a 7-point Likert scale. Each participant gets 2 round of 2 randomly picked questions out of 8.
  5. Vaccine:
    1. vaccine: 1 item on a 5-point Likert scale
    2. vaccine_attitude: 6 items on a 7-point Likert scale.(0-6)
  6. trust: 7 items on a 0-10 scale.
  7. Deal with Things in Life:
    1. resilience: 6 items on a 7-point Likert scale.
    2. uncertainty: 5 items on a 6-point scale.
  8. information_acquisition: 7 items on a 10-point Scale.
  9. distrust:
    1. misconception: 6 items on a 7-point Likert scale.
    2. conspirational thinking: 4 items on a 7-point Likert scale.
    3. antiexpert: 3 items on a 7-point Likert scale
  10. moral_values: 11 items on a 7-point Likert scale.(0-6)
  11. emotions: 8 items on a 7-point Likert scale.(0-6)

@KingArthur0205
Copy link
Collaborator

@ben-domingue PR for issue: #716
Data entry is added into the dictionary

@ben-domingue
Copy link
Owner Author

@KingArthur0205 quick question: these two don't match the numbers you quoted above. the numbers i get are below. thoughts?

[1] "ECPS_Sahm_2024_DTL.Rdata"
11 items
[1] "ECPS_Sahm_2024_SSCD.Rdata"
24 items

@KingArthur0205
Copy link
Collaborator

KingArthur0205 commented Nov 27, 2024

@ben-domingue Hi Ben!
re SSCD: Each participant is randomly assigned 2 out of 8 questions, repeated twice. As a result, the variables were named differently for the 8 items across the two sets, resulting into 16 items. The rest 8 items were from the compliance sub-scale.(hence 16 + 8 adding up to 24 items) Would it make sense to rename these variables to reduce redundancy and simplify the dataset?

re DTL: Sorry this was a mistake in my comment above. There are actually 11 items in the dataset not 10.
截屏2024-11-27 14 47 16

@ben-domingue
Copy link
Owner Author

DTL: no worries!
SSCD: hm. weird. i don't know that i totally follow what they are doing. can you track the items consistnetly? i'm honestly happy following your lead here just flagging something that didn't quite match up.

@KingArthur0205
Copy link
Collaborator

KingArthur0205 commented Nov 27, 2024

@ben-domingue I'd really value your feedbacks here! These are essentially the same questions asked under different contexts.(in figure 3 below). I lean towards treating them as separate items. Note the red texts on the right column
截屏2024-11-27 15 03 15
截屏2024-11-27 15 03 26
截屏2024-11-27 15 05 27

@ben-domingue
Copy link
Owner Author

ah, i see. so same text but different scenario. i think you're right that we should just treat them as separate items. there is probably some system we could use to manage this dependency. maybe that is a bit of data standardizing that would be useful? some shorthand that would allow people to recognize these as potentially related items?

@KingArthur0205
Copy link
Collaborator

@ben-domingue I guess we can add a suffix like _context1 and _context2 in the item name to show this. I'm open to thoughts : )

@ben-domingue
Copy link
Owner Author

this is an important question. let me think about it.

@ben-domingue
Copy link
Owner Author

@KingArthur0205 i would suggest we process this data using this idea:
https://domingue-lab.slack.com/archives/C05AKJGU3UJ/p1732806037393099?thread_ts=1732805946.386829&cid=C05AKJGU3UJ
we can then revisit if needed (it'll be easy to id as the only dataset with the item_family element. that seem ok?

@ben-domingue
Copy link
Owner Author

<we can wait and have a meeting about cov_>

@ben-domingue
Copy link
Owner Author

@KingArthur0205 i think we are ok to finalize this one based on the updated data standard, right? https://datapages.github.io/irw/standard.html
nbd if it is in the queue i just wanted to flag that, from my pov, we are good to go here.

@KingArthur0205
Copy link
Collaborator

Working on this

@KingArthur0205
Copy link
Collaborator

Covariates:

  1. identity_df: age, gender, residing_country, relationship_status, dependents_no, live_alone
  2. stress_df: age, gender, residing_country, occupation, relationship_status, live_alone, covid_self
  3. support_df: age, gender, residing_country, occupation, relationship_status, live_alone, covid_self, dependents_no
  4. sscd_df: age, gender, education, residing_country, relationship_status, live_alone, covid_self, dependents_no
  5. vaccine_df: age, gender, education, residing_country,covid_self
  6. trust_df: age, gender, education, residing_country,covid_self
  7. DTL_df(Deal with Life): age, gender, education, occupation, residing_country,covid_self, live_alone
  8. ia_df(Information Acquisition): age, gender, education, occupation, residing_country,covid_self, live_alone
  9. distrust_df: age, gender, education, occupation, residing_country,covid_self, live_alone
  10. moral_df: age, gender, education, occupation, residing_country,covid_self, live_alone
  11. emotion_df: age, gender, education, occupation, residing_country,covid_self, live_alone

@KingArthur0205
Copy link
Collaborator

KingArthur0205 commented Dec 29, 2024

Data:
ecps_sahm_2024.zip

Code:

# Data: https://osf.io/n26mb/
#  Paper: https://econtent.hogrefe.com/doi/epdf/10.1027/1015-5759/a000858
library(haven)
library(dplyr)
library(tidyr)

df <- read.csv("Final_COVIDiSTRESS_Vol2_cleaned.csv")
df <- df |>
  rename(id=ResponseId)

# ---------- Process Identity Dataset ----------
identity_df <- df |> 
  select(id, starts_with("identity"), -ends_with("midneutral"), age, gender, residing_country, relationship_status, dependents_no, live_alone)
identity_df <- pivot_longer(identity_df, cols=-c(id, age, gender, residing_country, relationship_status, dependents_no, live_alone), values_to="resp", names_to="item")
identity_df <- identity_df[!is.na(identity_df$resp), ]
colnames(identity_df) <- ifelse(
  colnames(identity_df) %in% c("id", "resp", "item"), 
  colnames(identity_df), 
  paste0("cov_", colnames(identity_df))
)

save(identity_df, file="ecps_sahm_2024_identity.rdata")
write.csv(identity_df, "ecps_sahm_2024_identity.csv", row.names=FALSE)

# ---------- Process Stree Related Dataset ----------
stress_df <- df |>
  select(id, starts_with("perceived_stress"), starts_with("primary_stressor"), starts_with("secondary_stressor"), -ends_with("Appl"), age, gender, residing_country, occupation, relationship_status, dependents_no, live_alone, covid_self)
stress_df <- pivot_longer(stress_df, cols=-c(id, age, gender, residing_country, occupation, relationship_status, live_alone, covid_self, dependents_no), values_to="resp", names_to="item")
stress_df <- stress_df[!is.na(stress_df$resp), ]
colnames(stress_df) <- ifelse(
  colnames(stress_df) %in% c("id", "resp", "item"), 
  colnames(stress_df), 
  paste0("cov_", colnames(stress_df))
)

save(stress_df, file="ecps_sahm_2024_stress.rdata")
write.csv(stress_df, "ecps_sahm_2024_stress.csv", row.names=FALSE)

# ---------- Process Perceived Support Dataset ----------
support_df <- df |>
  select(id, starts_with("perceived_support"), -ends_with("Appl"), -ends_with("midneutral"), age, gender, residing_country, occupation, relationship_status, live_alone, covid_self, dependents_no)
support_df <- pivot_longer(support_df, cols=-c(id, age, gender, residing_country, occupation, relationship_status, live_alone, covid_self, dependents_no), values_to="resp", names_to="item")
support_df <- support_df[!is.na(support_df$resp), ]
colnames(support_df) <- ifelse(
  colnames(support_df) %in% c("id", "resp", "item"), 
  colnames(support_df), 
  paste0("cov_", colnames(support_df))
)

save(support_df, file="ecps_sahm_2024_support.rdata")
write.csv(support_df, "ecps_sahm_2024_support.csv", row.names=FALSE)

# ---------- Process Staying Safe & Compliance Dataset ----------
sscd_df <- df |>
  select(id, starts_with("compliance"), starts_with("socialinfluence"), -ends_with("Appl"), age, gender, education, residing_country, relationship_status, live_alone, covid_self, dependents_no)
sscd_df <- pivot_longer(sscd_df, cols=-c(id, age, gender, education, residing_country, relationship_status, live_alone, covid_self, dependents_no), values_to="resp", names_to="item")
sscd_df <- sscd_df[!is.na(sscd_df$resp), ]
colnames(sscd_df) <- ifelse(
  colnames(sscd_df) %in% c("id", "resp", "item"), 
  colnames(sscd_df), 
  paste0("cov_", colnames(sscd_df))
)

sscd_df$item_family <- with(sscd_df, ifelse(
  grepl("^compliance", item), 1,
  ifelse(grepl("^socialinfluence_nor1", item), 2,
         ifelse(grepl("^socialinfluence_nor2", item), 3, NA)
  )
))

save(sscd_df, file="ecps_sahm_2024_sscd.rdata")
write.csv(sscd_df, "ecps_sahm_2024_sscd.csv", row.names=FALSE)

# ---------- Process Vaccine Dataset ----------
vaccine_df <- df |>
  select(id, starts_with("vaccine"), -ends_with("midneutral"), age, gender, education, residing_country,covid_self)
vaccine_df <- pivot_longer(vaccine_df, cols=-c(id, age, gender, education, residing_country,covid_self), values_to="resp", names_to="item")
vaccine_df <- vaccine_df[!is.na(vaccine_df$resp), ]
colnames(vaccine_df) <- ifelse(
  colnames(vaccine_df) %in% c("id", "resp", "item"), 
  colnames(vaccine_df), 
  paste0("cov_", colnames(vaccine_df))
)

save(vaccine_df, file="ecps_sahm_2024_vaccine.Rdata")
write.csv(vaccine_df, "ecps_sahm_2024_vaccine.csv", row.names=FALSE)

# ---------- Process Trust Dataset ----------
trust_df <- df |>
  select(id, starts_with("trust"),  age, gender, education, residing_country,covid_self)
trust_df <- pivot_longer(trust_df, cols=-c(id, age, gender, education, residing_country,covid_self), values_to="resp", names_to="item")
trust_df <- trust_df[!is.na(trust_df$resp), ]
colnames(trust_df) <- ifelse(
  colnames(trust_df) %in% c("id", "resp", "item"), 
  colnames(trust_df), 
  paste0("cov_", colnames(trust_df))
)

save(trust_df, file="ecps_sahm_2024_trust.rdata")
write.csv(trust_df, "ecps_sahm_2024_trust.csv", row.names=FALSE)

# ---------- Process Deal with Things in Life Dataset ----------
DTL_df <- df |>
  select(id, starts_with("resilience"), starts_with("uncertainty"), age, gender, education, occupation, residing_country,covid_self, live_alone)
DTL_df <- pivot_longer(DTL_df, cols=-c(id, age, gender, education, residing_country,occupation, covid_self, live_alone), values_to="resp", names_to="item")
DTL_df <- DTL_df[!is.na(DTL_df$resp), ]
colnames(DTL_df) <- ifelse(
  colnames(DTL_df) %in% c("id", "resp", "item"), 
  colnames(DTL_df), 
  paste0("cov_", colnames(DTL_df))
)

save(DTL_df, file="ecps_sahm_2024_dtlL.Rdata")
write.csv(DTL_df, "ecps_sahm_2024_dtl.csv", row.names=FALSE)

# ---------- Process Information Acquisition Dataset ----------
ia_df <- df |>
  select(id, starts_with("information"), -ends_with("TEXT"), age, gender, education, occupation, residing_country,covid_self, live_alone)
ia_df <- pivot_longer(ia_df, cols=-c(id, age, gender, education, occupation, residing_country,covid_self, live_alone), values_to="resp", names_to="item")
ia_df <- ia_df[!is.na(ia_df$resp), ]
colnames(ia_df) <- ifelse(
  colnames(ia_df) %in% c("id", "resp", "item"), 
  colnames(ia_df), 
  paste0("cov_", colnames(ia_df))
)

save(ia_df, file="ecps_sahm_2024_ia.Rdata")
write.csv(ia_df, "ecps_sahm_2024_ia.csv", row.names=FALSE)

# ---------- Process Distrust Dataset ----------
distrust_df <- df |>
  select(id, starts_with("misperception"), starts_with("conspir"), starts_with("antiex"), age, gender, education, occupation, residing_country,covid_self, live_alone)
distrust_df <- pivot_longer(distrust_df, cols=-c(id, age, gender, education, occupation, residing_country,covid_self, live_alone), values_to="resp", names_to="item")
distrust_df <- distrust_df[!is.na(distrust_df$resp), ]
colnames(distrust_df) <- ifelse(
  colnames(distrust_df) %in% c("id", "resp", "item"), 
  colnames(distrust_df), 
  paste0("cov_", colnames(distrust_df))
)

save(distrust_df, file="ecps_sahm_2024_distrust.rdata")
write.csv(distrust_df, "ecps_sahm_2024_distrust.csv", row.names=FALSE)

# ---------- Process Moral Values Dataset ----------
moral_df <- df |>
  select(id, starts_with("moral"), -ends_with("midneutral"), age, gender, education, occupation, residing_country,covid_self, live_alone)
moral_df <- pivot_longer(moral_df, cols=-c(id, age, gender, education, occupation, residing_country,covid_self, live_alone), values_to="resp", names_to="item")
moral_df <- moral_df[!is.na(moral_df$resp), ]
colnames(moral_df) <- ifelse(
  colnames(moral_df) %in% c("id", "resp", "item"), 
  colnames(moral_df), 
  paste0("cov_", colnames(moral_df))
)

save(moral_df, file="ecps_sahm_2024_moral.rdata")
write.csv(moral_df, "ecps_sahm_2024_moral.csv", row.names=FALSE)

# ---------- Process Emotions Dataset ----------
emotion_df <- df |>
  select(id, starts_with("emotion"), -ends_with("midneutral"), age, gender, education, occupation, residing_country,covid_self, live_alone)
emotion_df <- pivot_longer(emotion_df, cols=-c(id, age, gender, education, occupation, residing_country,covid_self, live_alone), values_to="resp", names_to="item")
emotion_df <- emotion_df[!is.na(emotion_df$resp), ]
colnames(emotion_df) <- ifelse(
  colnames(emotion_df) %in% c("id", "resp", "item"), 
  colnames(emotion_df), 
  paste0("cov_", colnames(emotion_df))
)

save(emotion_df, file="ecps_sahm_2024_emotion.Rdata")
write.csv(emotion_df, "ecps_sahm_2024_emotion.csv", row.names=FALSE)

@ben-domingue
Copy link
Owner Author

morning @KingArthur0205 ! a few notes.

  • we should just use all lowercase filenames as redivis converts automatically to that at some point. nbd here as there is tons of old stuff that didn't use that format but we might want to switch to it going fwd.
  • the SSCD table: it looks like you just processed items as separate names? that is ok but i wanted to just check why you didn't use the item_family idea (in case it needs to be improved or something)
  • there are two tables that had originally been put into the sheet (Vaccine & Trust) that we don't have files for. That's ok if it is right, just wanted to double check.

@KingArthur0205
Copy link
Collaborator

@ben-domingue Morning!

  1. Re filenames: I've updated the zip file in the comment above. : )
  2. Re item_family: Thank you for the reminder! Apologies for the oversight; I’ve been focused on addressing the covariates and still learning the new standard. I also double-checked and think this is the only set that requires item_family as a feature.

To ensure I'm on the right track, here’s an excerpt of the data: Compliance, socialinfluence_nor1, and socialinfluence_nor2 are three testlets containing similar questions under different scenarios. Does this align with the new standard, or should we consider renaming the items to make them more consistent with one another?
截屏2024-12-30 13 28 13

  1. Re vaccine and trust: These should definitely be included. I'm still getting back into the groove after the holidays. : (

@ben-domingue
Copy link
Owner Author

@ben-domingue

@ben-domingue
Copy link
Owner Author

@KingArthur0205 this one is proving to be weird. i had downloaded the files but they weren't uploading correctly for reasons i don't understand. i might wait to process this one until after we have vaccine & trust and we can see at that time if there is some reason for problems with uploads.

and your handling of the item_family stuff looks good to me!

@KingArthur0205
Copy link
Collaborator

KingArthur0205 commented Jan 6, 2025

@ben-domingue That's weird as the zip seems to be fine on my side(with vaccine and trust included) I'll send you a copy via Slack for the QC. : )

@ben-domingue
Copy link
Owner Author

the issue is all in the upload to redivis. they seem fine on my end as well.

@ben-domingue
Copy link
Owner Author

@KingArthur0205 ship PR

note to self, add following at end:

fns<-list.files(pattern="*.csv")
for (fn in fns) {
    x<-read.csv(fn)
    for (i in 1:ncol(x)) x[,i]<-gsub("\n"," ",x[,i])
    write.table(x,fn,quote=FALSE,row.names=FALSE,sep="|")
}

@KingArthur0205
Copy link
Collaborator

@ben-domingue PR for this issue: #716

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants