Title: An Item Weighting Method for Item Response Matrices
Version: 0.1.4
Description: Applies the item weighting method from Kilic & Dogan (2019) <doi:10.21031/epod.516057>. To improve construct validity, this method re-computes scores by utilizing the item discrimination index in conjunction with a condition established upon person ability and item difficulty.
License: GPL-3
Encoding: UTF-8
RoxygenNote: 7.3.2
Imports: psychometric
NeedsCompilation: no
Packaged: 2025-07-21 16:57:45 UTC; Faruk
Author: Abdullah Faruk Kilic [aut, cre]
Maintainer: Abdullah Faruk Kilic <abdullahfarukkilic@gmail.com>
Repository: CRAN
Date/Publication: 2025-07-22 11:40:07 UTC

Item Weighting According to the Kilic & Dogan (2019) Method

Description

This function weights an item-response matrix using the method proposed by Kilic & Dogan (2019). The method is based on adding the item reliability index (corrected item-total correlation) to the original score if the sum of the person's average score and the item's difficulty index exceeds a certain threshold (default is 1).

Usage

item_weighting(x, threshold = 1)

Arguments

x

A numeric data.frame or matrix. Rows should represent individuals, and columns should represent items. The method was designed for dichotomous (0-1) data.

threshold

The threshold value for applying the weighting. The article uses a value of 1.

Value

A new data.frame of the same dimensions with weighted scores.

References

Kilic, A. F., & Dogan, N. (2019). The effect of item weighting on reliability and validity. Journal of Measurement and Evaluation in Education and Psychology, 10(2), 149-164. DOI: 10.21031/epod.516057

Examples

## Example 1: Dichotomous Data (as in the original study)
set.seed(123)
n_students_dich <- 200
n_items_dich <- 10
dich_data <- as.data.frame(
  matrix(
    rbinom(n_students_dich * n_items_dich, 1, 0.6),
    nrow = n_students_dich
  )
)
cat("--- Original Dichotomous Data (Head) ---\n")
print(head(dich_data))

weighted_dich <- item_weighting(dich_data)
cat("\n--- Weighted Dichotomous Data (Head) ---\n")
print(head(weighted_dich))


## Example 2: 5-Point Likert-Type Data
# Note: The function was designed for 0-1 data. With Likert data,
# the person's average score will likely be > 1, causing the weighting
# condition to be met for almost all responses.
set.seed(456)
n_students_likert <- 150
n_items_likert <- 15
likert_data <- as.data.frame(
  matrix(
    sample(1:5, size = n_students_likert * n_items_likert, replace = TRUE),
    nrow = n_students_likert
  )
)
cat("\n--- Original 5-Point Likert Data (Head) ---\n")
print(head(likert_data))

weighted_likert <- item_weighting(likert_data)
cat("\n--- Weighted 5-Point Likert Data (Head) ---\n")
print(head(weighted_likert))

Calculate Weighted Mean Scores Using the Kılıç & Doğan (2019) Method

Description

This function first weights an item-response matrix using the 'item_weighting' function and then calculates the mean score for each individual.

Usage

weighted_mean_score(x, threshold = 1)

Arguments

x

A numeric data.frame or matrix. Rows should represent individuals, and columns should represent items. The method was designed for dichotomous (0-1) data.

threshold

The threshold value for applying the weighting, passed to the 'item_weighting' function. The article uses a value of 1.

Value

A numeric vector containing the weighted mean score for each individual (each row).

Examples

# Generate sample dichotomous data
set.seed(123)
my_data <- as.data.frame(
  matrix(rbinom(200 * 10, 1, 0.6), nrow = 200)
)

# Calculate weighted mean scores
mean_scores <- weighted_mean_score(my_data, threshold = 1)

# View the first few mean scores
cat("--- Weighted Mean Scores (Head) ---\n")
print(head(mean_scores))

# Compare with simple unweighted mean scores
unweighted_means <- rowMeans(my_data)
cat("\n--- Unweighted Mean Scores (Head) ---\n")
print(head(unweighted_means))

Calculate Weighted Sum Scores Using the Kılıç & Doğan (2019) Method

Description

This function first weights an item-response matrix using the 'item_weighting' function and then calculates the total (sum) score for each individual.

Usage

weighted_sum_score(x, threshold = 1)

Arguments

x

A numeric data.frame or matrix. Rows should represent individuals, and columns should represent items. The method was designed for dichotomous (0-1) data.

threshold

The threshold value for applying the weighting, passed to the 'item_weighting' function. The article uses a value of 1.

Value

A numeric vector containing the total weighted score for each individual (each row).

Examples

# Generate sample dichotomous data
set.seed(123)
my_data <- as.data.frame(
  matrix(rbinom(200 * 10, 1, 0.6), nrow = 200)
)

# Calculate weighted sum scores
total_scores <- weighted_sum_score(my_data, threshold = 1)

# View the first few scores
cat("--- Weighted Total Scores (Head) ---\n")
print(head(total_scores))

# Compare with simple unweighted scores
unweighted_scores <- rowSums(my_data)
cat("\n--- Unweighted Total Scores (Head) ---\n")
print(head(unweighted_scores))

mirror server hosted at Truenetwork, Russian Federation.