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))