This vignette offers considerations for using the
engager package with privacy-supporting defaults and
ethical practices for educational data analysis. It is not a FERPA
source, it is not legal advice, and the package does not guarantee FERPA
compliance. Users and institutions remain responsible for policy review,
authorization, disclosure decisions, retention, and legal
compliance.
This vignette is not a summary of FERPA requirements. For FERPA interpretation, you might start with official U.S. Department of Education resources and/or your institution’s policies:
https://studentprivacy.ed.gov/ferpahttps://studentprivacy.ed.gov/faq/what-ferpahttps://studentprivacy.ed.gov/faq/may-educational-agency-or-institution-disclose-directory-information-without-prior-consenthttps://studentprivacy.ed.gov/faq/under-ferpa-may-educational-agency-or-institution-disclose-education-records-any-its-employeesWhen using this package with student data, consider confirming through local policy review that your workflow, data access, disclosure decisions, retention plan, and output sharing are authorized.
The package includes privacy-supporting defaults intended to reduce accidental exposure of student identifiers:
By default, the package sets privacy level to "mask",
which masks common identifier fields in package summaries, plots, and
writers.
The package supports multiple privacy levels that can be considered during local review:
"privacy_strict")The broadest built-in masking option:
This level masks: - Student names and IDs - Email addresses - Phone numbers - Addresses - Social security numbers - Birth dates - Parent/guardian names - Instructor names and IDs
"privacy_standard")A broader masking option for many instructional workflows:
This level masks: - Student names and IDs - Email addresses - Phone numbers - Instructor names and IDs
"mask")The package default for basic identifier masking:
This level masks: - Student names and IDs - Email addresses
"none")Turns off package masking. This is usually not appropriate for student data unless local review has authorized identifiable outputs:
Setting the option does not modify existing objects. Supported masking and output helpers may warn when they run with this value; inspect their results before storing or sharing them.
The package provides functions that can support privacy review. These functions identify common risks and apply masking or anonymization, but they do not make a legal determination.
You can review data for possible privacy risks:
# Sample data with PII
sample_data <- tibble::tibble(
student_id = c("12345", "67890"),
preferred_name = c("Alice Johnson", "Bob Smith"),
email = c("alice@university.edu", "bob@university.edu"),
participation_score = c(85, 92)
)
# Run a privacy-oriented technical review
validation_result <- review_privacy_risks(sample_data)
print(validation_result$passed)
print(validation_result$recommendations)anonymize_educational_data() applies masking, hashing,
or pseudonymization transformations to recognized columns. Hashing
requires an explicit non-empty salt. Missing and blank identifiers
remain missing or blank. These technical operations do not by themselves
establish that re-identification is impossible or that an output
satisfies a legal or institutional definition of anonymized data.
# Structured-field masking
masked_data <- anonymize_educational_data(sample_data, method = "mask")
# Hashing transform
hashed_data <- anonymize_educational_data(sample_data, method = "hash", hash_salt = "institution_salt")
# Pseudonymization transform
pseudonymized_data <- anonymize_educational_data(sample_data, method = "pseudonymize")Aggregation is intentionally not exposed through this helper in v0.1.0. Remove row-level identifiers before aggregating and review the result before sharing it.
You can generate privacy review reports:
# Sample data with identifier-like fields
sample_data <- tibble::tibble(
student_id = c("12345", "67890"),
preferred_name = c("Alice Johnson", "Bob Smith"),
email = c("alice@university.edu", "bob@university.edu"),
participation_score = c(85, 92)
)
# Generate privacy review report
report <- engager::generate_privacy_review_report(sample_data)
# Save report to a temporary file
report_file <- tempfile(fileext = ".json")
written_report <- engager::generate_privacy_review_report(
sample_data,
output_file = report_file,
report_format = "json"
)
unlink(report_file)The exported review interface can record a retention period as part of a technical review. It does not enforce an institutional records schedule or decide which records may be retained or disposed of:
# Add date column for retention checking
sample_data_with_dates <- sample_data %>%
dplyr::mutate(session_date = as.Date(c("2024-01-15", "2024-02-20")))
# Include retention context in the technical review
retention_review <- review_privacy_risks(
sample_data_with_dates,
check_retention = TRUE,
retention_period = "academic_year"
)
print(retention_review$retention_check$retention_period_days)
print(retention_review$recommendations)Compare record dates with the institution-approved schedule in the authorized records-management system, and have the appropriate owner approve any disposal.
The package cannot know which institutional role, policy, or legal framework applies to a particular dataset. Instead of treating institution type as a compliance decision, use the review context only to surface different technical prompts for local review.
For a classroom or program-improvement workflow, one review might look like:
classroom_review <- review_privacy_risks(
sample_data,
institution_type = "educational"
)
print(classroom_review$institution_guidance)For a research workflow, use the research context as a reminder to consider IRB, consent, publication, and data-sharing expectations:
research_review <- review_privacy_risks(
sample_data,
institution_type = "research"
)
print(research_review$institution_guidance)If a workflow has both instructional and research uses, treat that as a reason to document both review paths rather than as a stronger package-level claim:
Consider classifying the data before analysis:
Consider access controls that match the data classification:
Plan storage and transfer practices for sensitive data:
Follow local retention and disposal procedures:
This checklist may help support institutional privacy review:
This package is intended to support institutionally authorized educational analysis. Before using it with transcripts, rosters, or other student records, consider confirming that the planned workflow has been reviewed under your local policies. The package can reduce accidental disclosure through masking and review helpers, but it does not determine whether a use is legally permitted.
Choose local storage and access controls that match your institution’s data classification:
Before processing data, consider setting and recording the intended privacy level:
Consider "privacy_standard" or
"privacy_strict" when your local review calls for broader
masking. These are package setting names, not compliance labels. Use
"none" only for a documented, authorized reason and review
all outputs before sharing them.
The package’s privacy review helpers can support technical checks; they are not legal determinations:
Before sharing or storing results outside the restricted working environment, consider:
write_metrics() for CSV exports; it omits raw
transcript/comment text by default because free-text comments can
include spoken names or contextual identifiers.Follow local policy for retention and disposal. A local process might include:
For an institutional deployment or other formal review, a local record can answer these questions without including raw student data:
This sign-off record is best kept with the institution or authorized review owner. It does not show that the package guarantees legal compliance.
If privacy masking isn’t working as expected:
If privacy validation is flagging issues:
If the technical review raises retention questions:
This package is best used to support educational outcomes:
Avoid using this package for surveillance:
Consider transparency around data use:
Center student benefit in data use:
https://studentprivacy.ed.gov/ferpahttps://studentprivacy.ed.gov/faq/what-ferpahttps://studentprivacy.ed.gov/faq/may-educational-agency-or-institution-disclose-directory-information-without-prior-consenthttps://studentprivacy.ed.gov/faq/under-ferpa-may-educational-agency-or-institution-disclose-education-records-any-its-employees?engager?ensure_privacy and
getOption("engager.privacy_level")?review_privacy_risks,
?anonymize_educational_data?generate_privacy_review_reportPrivacy review can be important when working with student data. This package provides tools that support privacy-conscious workflows, but responsibility for authorization, legal interpretation, and institutional policy compliance remains with the user and their institution. Consider reviewing official sources and institutional policies, and consult appropriate institutional officials when needed.
A useful working posture is privacy by design, with local review before sharing.