ben-domingue / irw

Code related to data for the Item Response Warehouse
https://datapages.github.io/irw/
7 stars 12 forks source link

Independent Validation of the Player Experience Inventory #481

Closed ben-domingue closed 3 days ago

ben-domingue commented 1 month ago

https://osf.io/8xuhr/ paper. https://osf.io/preprints/psyarxiv/yj82m/

License: CC-By Attribution 4.0 International perhaps worrth a conversation over what is the object being measured (the game?)

KingArthur0205 commented 3 days ago

Player Experience Inventory(PXI_df): 1551 partcipants, 33 items, on a seven-point Likert-type response scale from 1 ("Do not agree") to 7 ("Strongly agree").[Notes:In paper, PXI_df shoule have 30 items onseven-point Likert-type response scale ranging from -3 ("Strongly disagree") to +3 ("Strongly agree").]

AttrakDiff(AttDiff_df): 1551 partcipants, 28-item version of the scale, available on the official website, which measures four constructs with seven items each: pragmatic quality (PQ), hedonic quality - identification (HQ-I), hedonic quality - stimulation (HQ-S), and attractiveness (ATT). Ranging with a seven-point semantic differential response scale.

Intrinsic Motivation Inventory(IMI_df): 1551 partcipants, 7 items were collectedon the seven-point Likert-type response scale from 1 ("Not at all true") to 7 ("Very true").

Player Experience of Need Satisfaction scale(PENS_df): 1551 partcipants, 21 items, on a seven-point Likert-type response scale from 1 ("Do not agree") to 7 ("Strongly agree").

KingArthur0205 commented 3 days ago

@ben-domingue

Data: FIVPEI_Perrig_2023.zip

Code:

library(haven)
library(dplyr)
library(tidyr)
library(openxlsx)
library(readr)
library(readxl)
library(sas7bdat)

remove_na <- function(df) {
  df <- df[!(rowSums(is.na(df[, -which(names(df) %in% c("id"))])) == (ncol(df) - 1)), ]
  return(df)
}

data_df <- read_xlsx("PXI_validation_main_data.xlsx")
data_df  <- data_df |>
  rename(id=...1)

# ------ Process PXI Dataset ------
PXI_df <- data_df |>
  select(starts_with("PXI"), id)
PXI_df  <- remove_na(PXI_df)
PXI_df <- pivot_longer(PXI_df, cols=-c(id), names_to="item", values_to="resp")

save(PXI_df, file="FIVPEI_Perrig_2023_PXI.Rdata")
write.csv(PXI_df, "FIVPEI_Perrig_2023_PXI.csv", row.names=FALSE)

# ------ Process AttDiff Dataset ------
PQ_df <- data_df |>
  select(starts_with("PQ"), id)
PQ_df  <- remove_na(PQ_df)
PQ_df <- pivot_longer(PQ_df, cols=-c(id), names_to="item", values_to="resp")

HQI_df <- data_df |>
  select(starts_with("HQI"), id)
HQI_df  <- remove_na(HQI_df)
HQI_df <- pivot_longer(HQI_df, cols=-c(id), names_to="item", values_to="resp")

HQS_df <- data_df |>
  select(starts_with("HQS"), id)
HQS_df  <- remove_na(HQS_df)
HQS_df <- pivot_longer(HQS_df, cols=-c(id), names_to="item", values_to="resp")

ATT_df <- data_df |>
  select(starts_with("ATT"), id)
ATT_df  <- remove_na(ATT_df)
ATT_df <- pivot_longer(ATT_df, cols=-c(id), names_to="item", values_to="resp")

PQ_df$group <- "PQ"
HQI_df$group <- "HQI"
HQS_df$group <- "HQS"
ATT_df$group <- "ATT"

AttDiff_df<- rbind(HQI_df,HQS_df,ATT_df)

save(AttDiff_df, file="FIVPEI_Perrig_2023_AttDiff.Rdata")
write.csv(AttDiff_df, "FIVPEI_Perrig_2023_AttDiff.csv", row.names=FALSE)

# ------ Process PENS Dataset ------
PENS_df <- data_df |>
  select(starts_with("PENS"), id)
PENS_df  <- remove_na(PENS_df)
PENS_df <- pivot_longer(PENS_df, cols=-c(id), names_to="item", values_to="resp")

save(PENS_df, file="FIVPEI_Perrig_2023_PENS.Rdata")
write.csv(PENS_df, "FIVPEI_Perrig_2023_PENS.csv", row.names=FALSE)

# ------ Process IMI Dataset ------
IMI_df <- data_df |>
  select(starts_with("IMI"), id)
IMI_df  <- remove_na(IMI_df)
IMI_df <- pivot_longer(IMI_df, cols=-c(id), names_to="item", values_to="resp")

save(IMI_df, file="FIVPEI_Perrig_2023_IMI.Rdata")
write.csv(IMI_df, "FIVPEI_Perrig_2023_IMI.csv", row.names=FALSE)
KingArthur0205 commented 3 days ago

Data dictionary added at row 646.

ben-domingue commented 3 days ago

excellent, ship PR?

KingArthur0205 commented 3 days ago

Code added to repo :)