Questo report presenta l’analisi esplorativa dei dati raccolti attraverso un questionario pilota somministrato a 6 persone non vedenti o ipovedenti. Il questionario indaga l’esperienza quotidiana in cucina: autonomia, difficolta’, strategie compensative, uso di tecnologie assistive e desideri per il futuro.
Nota metodologica: Con un campione di N=6, i risultati hanno valore esclusivamente esplorativo e non possono essere generalizzati. Le analisi inferenziali sono omesse a favore di una descrizione qualitativa approfondita dei pattern osservati. Dove riportate, le statistiche descrittive vanno interpretate come indicazioni di tendenza, non come stime di parametri popolazionali.
#install.packages(c("readxl", "tidyverse", "knitr", "kableExtra", "RColorBrewer", "reshape2"))
library(readxl)
library(tidyverse)
library(knitr)
library(kableExtra)
library(RColorBrewer)
library(reshape2)
raw <- read_xls("Dati_Aggregati_Questionario_Pilot copia.xls",
sheet = 1, col_names = FALSE)
# Riga 2 = codici variabili (header), riga 3 = testo domande, righe 4-9 = dati
codici <- as.character(raw[2, ])
domande <- as.character(raw[3, ])
dati <- raw[4:9, ]
colnames(dati) <- codici
# Conversione colonne numeriche
num_cols <- c("Duration (in seconds)", "D3",
paste0("D21_", 1:4),
"D24_1", "D31_1",
paste0("D28a_", 1:9),
paste0("D28b_", 1:12),
paste0("D32_", 1:20),
"D41_1", "D42_1", "D43_1",
paste0("D44_", 1:4),
paste0("D45_", 1:4),
"D46_1", "D48_1", "D49_1",
paste0("D55_", 1:10),
paste0("D58_", 1:6))
for (col in num_cols) {
if (col %in% colnames(dati)) {
dati[[col]] <- as.numeric(dati[[col]])
}
}
dati$Durata_min <- dati$`Duration (in seconds)` / 60
demo <- dati %>%
transmute(
Soggetto = D1,
Genere = D2,
Eta = D3,
Provenienza = D5,
`Contesto abitativo` = D6,
`Titolo di studio` = D7,
`Status socioeconomico` = D8
)
demo %>%
kable(caption = "Profilo demografico dei partecipanti") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
full_width = FALSE) %>%
column_spec(1, bold = TRUE)
| Soggetto | Genere | Eta | Provenienza | Contesto abitativo | Titolo di studio | Status socioeconomico |
|---|---|---|---|---|---|---|
| 1 | Maschio | 34 | Nord Italia | Area urbana (centro città) | Diploma di scuola media superiore | Medio-Basso |
| S002 | Femmina | 48 | Nord Italia | Area urbana (centro città) | Diploma di scuola media superiore | Medio |
| S003 | Maschio | 53 | Nord Italia | Area suburbana | Dottorato di ricerca / Master post-laurea | Medio |
| S004 | Femmina | 61 | Nord Italia | Area urbana (centro città) | Laurea triennale/specialistica/magistrale/vecchio ordinamento | Medio |
| S005 | Maschio | 44 | Sud Italia | Area semicentrale | Diploma di scuola media superiore | Medio-Alto |
| S006 | Femmina | 36 | Nord Italia | Area urbana (centro città) | Diploma di scuola media superiore | Medio-Alto |
ggplot(dati, aes(x = D3, y = reorder(D1, D3), fill = D2)) +
geom_col(width = 0.6, alpha = 0.85) +
scale_fill_manual(values = c("Maschio" = "#4E79A7", "Femmina" = "#E15759"),
name = "Genere") +
labs(x = "Eta", y = "", title = "Distribuzione per eta e genere") +
theme_minimal(base_size = 13) +
theme(legend.position = "top")
Il campione e’ bilanciato per genere (3M, 3F) con eta’ compresa tra 34 e 61 anni (M = 46, DS = 10.3). La maggioranza proviene dal Nord Italia (5/6).
visivo <- dati %>%
transmute(
Soggetto = D1,
`Non vedente dalla nascita` = D9,
Condizione = D11,
`Conosce Braille` = D20
)
visivo %>%
kable(caption = "Profilo della disabilita' visiva") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
full_width = FALSE) %>%
column_spec(1, bold = TRUE)
| Soggetto | Non vedente dalla nascita | Condizione | Conosce Braille |
|---|---|---|---|
| 1 | Sì | Cecità totale,Ambliopia | Sì, ma non lo uso |
| S002 | No | Retinite pigmentosa | Sì, ma non lo uso |
| S003 | Sì | Cecità totale | Sì e lo uso |
| S004 | Sì | Altro | Sì e lo uso |
| S005 | No | Ipovisione grave | Sì e lo uso |
| S006 | No | Altro | Sì e lo uso |
nascita_df <- data.frame(
Variabile = c(rep("Non vedente\ndalla nascita", 2), rep("Conosce\nil Braille", 2)),
Risposta = c("Si", "No", "Si, lo usa", "Si, non lo usa"),
N = c(sum(dati$D9 == "Si"), sum(dati$D9 == "No"),
sum(grepl("usa$", dati$D20)), sum(grepl("non lo usa", dati$D20)))
)
ggplot(nascita_df, aes(x = Variabile, y = N, fill = Risposta)) +
geom_col(position = "stack", width = 0.5, alpha = 0.85) +
scale_fill_brewer(palette = "Set2") +
labs(y = "Frequenza", x = "", title = "Cecita' dalla nascita e uso del Braille") +
theme_minimal(base_size = 13) +
coord_flip()
Insight: Meta’ del campione (3/6) e’ non vedente dalla nascita. Tutti conoscono il Braille, ma solo 4 su 6 lo usano attivamente — un dato rilevante per la progettazione di interfacce tattili.
auto_labels <- c(
"D21_1" = "Quanto usi\nla cucina",
"D21_2" = "Agio in\ncucina",
"D21_3" = "Indipendenza\nin cucina",
"D21_4" = "Impatto deficit\nvisivo"
)
auto_df <- dati %>%
select(D1, D21_1, D21_2, D21_3, D21_4) %>%
pivot_longer(-D1, names_to = "Variabile", values_to = "Punteggio") %>%
mutate(Label = auto_labels[Variabile])
auto_summary <- auto_df %>%
group_by(Label) %>%
summarise(
Media = mean(Punteggio, na.rm = TRUE),
DS = sd(Punteggio, na.rm = TRUE),
Mediana = median(Punteggio, na.rm = TRUE),
Min = min(Punteggio, na.rm = TRUE),
Max = max(Punteggio, na.rm = TRUE),
.groups = "drop"
)
ggplot(auto_df, aes(x = Label, y = Punteggio)) +
geom_boxplot(fill = "#A0CBE8", alpha = 0.7, width = 0.4, outlier.shape = NA) +
geom_jitter(aes(color = D1), width = 0.1, size = 3, alpha = 0.8) +
scale_color_brewer(palette = "Dark2", name = "Soggetto") +
scale_y_continuous(breaks = 0:5, limits = c(0, 5.5)) +
labs(x = "", y = "Punteggio (0-5)",
title = "Autovalutazione dell'esperienza in cucina",
subtitle = "Ogni punto rappresenta un partecipante") +
theme_minimal(base_size = 13) +
theme(legend.position = "right")
auto_summary %>%
mutate(across(where(is.numeric), ~round(., 2))) %>%
kable(caption = "Statistiche descrittive - Autovalutazione cucina (0-5)") %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
| Label | Media | DS | Mediana | Min | Max |
|---|---|---|---|---|---|
| Agio in cucina |
3.5
visivo
|
3.1
in cucina
|
3.8
la cucina
|
3.0
|
Insight chiave: Si osserva un pattern interessante: i partecipanti dichiarano livelli medio-alti di utilizzo della cucina e di agio, ma riconoscono un impatto rilevante del deficit visivo. Questo suggerisce che le strategie compensative permettono un buon livello di funzionamento soggettivo nonostante le barriere oggettive.
cucina_df <- data.frame(
Risposta = names(table(dati$D23)),
N = as.numeric(table(dati$D23))
)
ggplot(cucina_df, aes(x = reorder(Risposta, N), y = N)) +
geom_col(fill = "#59A14F", alpha = 0.8, width = 0.5) +
coord_flip() +
labs(x = "", y = "Frequenza", title = "Cucini da solo i pasti?") +
theme_minimal(base_size = 13)
sodd_df <- data.frame(
Risposta = names(table(dati$D26)),
N = as.numeric(table(dati$D26))
)
ggplot(sodd_df, aes(x = reorder(Risposta, N), y = N)) +
geom_col(fill = "#F28E2B", alpha = 0.8, width = 0.5) +
coord_flip() +
labs(x = "", y = "Frequenza",
title = "Sei soddisfatto di cio' che cucini?") +
theme_minimal(base_size = 13)
Questa sezione analizza le 20 attivita’ di cucina valutate su scala 0-5 (0 = nessuna difficolta’, 5 = massima difficolta’).
diff_labels <- c(
"D32_1" = "Localizzare oggetti",
"D32_2" = "Organizzare oggetti",
"D32_3" = "Contenuto bottiglie",
"D32_4" = "Comprendere contenitori",
"D32_5" = "Pulire",
"D32_6" = "Tagliare",
"D32_7" = "Sbucciare",
"D32_8" = "Misurare ingredienti",
"D32_9" = "Trasferire cibo",
"D32_10" = "Stendere impasto",
"D32_11" = "Cibo che si avvaria",
"D32_12" = "Comprendere bollitura",
"D32_13" = "Friggere",
"D32_14" = "Grigliare",
"D32_15" = "Girare cibo in pentola",
"D32_16" = "Capire cottura cibo",
"D32_17" = "Pulire superfici",
"D32_18" = "Pulire piatti",
"D32_19" = "Seguire ricette",
"D32_20" = "Leggere ingredienti"
)
diff_matrix <- dati %>%
select(D1, starts_with("D32_")) %>%
pivot_longer(-D1, names_to = "Attivita", values_to = "Difficolta") %>%
mutate(
Difficolta = as.numeric(Difficolta),
Attivita_lab = diff_labels[Attivita]
)
ggplot(diff_matrix, aes(x = D1,
y = reorder(Attivita_lab, Difficolta, FUN = mean),
fill = Difficolta)) +
geom_tile(color = "white", linewidth = 0.5) +
geom_text(aes(label = Difficolta), size = 3.5, color = "black") +
scale_fill_gradient2(low = "#2166AC", mid = "#F7F7F7", high = "#B2182B",
midpoint = 2.5, limits = c(0, 5),
name = "Difficolta'\n(0-5)") +
labs(x = "", y = "",
title = "Mappa delle difficolta' per attivita' e soggetto",
subtitle = "Ordinata per difficolta' media decrescente (alto = piu' difficile)") +
theme_minimal(base_size = 12) +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
panel.grid = element_blank())
diff_summary <- diff_matrix %>%
group_by(Attivita_lab) %>%
summarise(
Media = mean(Difficolta, na.rm = TRUE),
DS = sd(Difficolta, na.rm = TRUE),
Mediana = median(Difficolta, na.rm = TRUE),
.groups = "drop"
) %>%
arrange(desc(Media))
ggplot(diff_summary, aes(x = reorder(Attivita_lab, Media), y = Media)) +
geom_segment(aes(xend = reorder(Attivita_lab, Media), y = 0, yend = Media),
color = "grey60", linewidth = 0.8) +
geom_point(aes(size = DS), color = "#E15759", alpha = 0.8) +
geom_text(aes(label = round(Media, 1)), hjust = -0.5, size = 3.5) +
scale_size_continuous(range = c(3, 8), name = "Deviazione\nStandard") +
coord_flip() +
scale_y_continuous(limits = c(0, 5.5), breaks = 0:5) +
labs(x = "", y = "Difficolta' media (0-5)",
title = "Ranking delle difficolta' nelle attivita' di cucina",
subtitle = "Dimensione del punto = variabilita' inter-individuale") +
theme_minimal(base_size = 12)
diff_summary %>%
mutate(across(where(is.numeric), ~round(., 2))) %>%
rename(Attivita = Attivita_lab) %>%
kable(caption = "Ranking delle difficolta' (dalla piu' alla meno difficile)") %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE) %>%
row_spec(1:5, background = "#FDDEDE")
| Attivita | Media | DS | Mediana |
|---|---|---|---|
| Friggere | 4.33 | 0.82 | 4.5 |
| Comprendere contenitori | 3.50 | 0.55 | 3.5 |
| Contenuto bottiglie | 3.00 | 1.10 | 3.0 |
| Leggere ingredienti | 3.00 | 2.10 | 3.5 |
| Pulire | 3.00 | 0.00 | 3.0 |
| Tagliare | 3.00 | 1.67 | 2.5 |
| Capire cottura cibo | 2.83 | 1.72 | 3.0 |
| Grigliare | 2.83 | 2.48 | 3.5 |
| Misurare ingredienti | 2.67 | 2.16 | 3.5 |
| Sbucciare | 2.33 | 2.34 | 2.0 |
| Seguire ricette | 2.33 | 1.75 | 2.5 |
| Trasferire cibo | 2.33 | 1.37 | 2.5 |
| Stendere impasto | 2.17 | 2.48 | 1.5 |
| Girare cibo in pentola | 2.00 | 2.28 | 1.5 |
| Localizzare oggetti | 1.83 | 1.33 | 2.0 |
| Pulire superfici | 1.50 | 1.64 | 1.0 |
| Cibo che si avvaria | 1.17 | 1.17 | 1.0 |
| Organizzare oggetti | 1.17 | 1.33 | 1.0 |
| Comprendere bollitura | 1.00 | 1.67 | 0.0 |
| Pulire piatti | 0.83 | 1.60 | 0.0 |
Insight chiave: Le attivita’ che richiedono feedback visivo (leggere ingredienti, capire la cottura, identificare contenuti) tendono ad avere difficolta’ piu’ elevata rispetto a quelle che possono sfruttare feedback tattile o uditivo (pulire, organizzare). Le attivita’ con alta deviazione standard (dimensione del punto) rivelano che l’esperienza e’ molto soggettiva: cio’ che e’ facile per uno puo’ essere molto difficile per un altro.
diff_wide_num <- dati %>%
select(starts_with("D32_")) %>%
mutate(across(everything(), as.numeric))
colnames(diff_wide_num) <- diff_labels[colnames(diff_wide_num)]
dist_matrix <- dist(t(diff_wide_num), method = "euclidean")
hc <- hclust(dist_matrix, method = "ward.D2")
plot(hc, main = "Dendrogramma delle attivita' di cucina\n(clustering gerarchico)",
xlab = "", sub = "Metodo: Ward.D2, distanza euclidea",
cex = 0.75, hang = -1)
rect.hclust(hc, k = 4, border = c("#E15759", "#4E79A7", "#59A14F", "#F28E2B"))
Il dendrogramma raggruppa le attivita’ in famiglie con profili di difficolta’ simili, suggerendo che le barriere hanno una struttura sottostante legata al tipo di feedback sensoriale richiesto.
elett_labels <- c(
"D28a_1" = "Frigorifero",
"D28a_2" = "Congelatore",
"D28a_3" = "Forno",
"D28a_4" = "Piano cottura gas",
"D28a_5" = "Piano cottura induzione",
"D28a_6" = "Lavello/rubinetto",
"D28a_7" = "Microonde",
"D28a_8" = "Lavastoviglie",
"D28a_9" = "Bimby/robot cucina"
)
elett_df <- dati %>%
select(D1, starts_with("D28a_")) %>%
pivot_longer(-D1, names_to = "Elettrodomestico", values_to = "Uso") %>%
mutate(
Uso = as.numeric(Uso),
Elettrodomestico_lab = elett_labels[Elettrodomestico]
)
ggplot(elett_df, aes(x = reorder(Elettrodomestico_lab, Uso,
FUN = function(x) mean(x, na.rm = TRUE)),
y = Uso)) +
geom_boxplot(fill = "#A0CBE8", alpha = 0.6, width = 0.4, outlier.shape = NA) +
geom_jitter(aes(color = D1), width = 0.12, size = 2.5, alpha = 0.8) +
scale_color_brewer(palette = "Dark2", name = "Soggetto") +
coord_flip() +
scale_y_continuous(breaks = 0:5) +
labs(x = "", y = "Frequenza d'uso (0-5)",
title = "Utilizzo degli elettrodomestici in cucina") +
theme_minimal(base_size = 12)
Insight: Il lavello/rubinetto e il frigorifero sono gli elettrodomestici piu’ utilizzati (universali), mentre il Bimby/robot da cucina ha adozione quasi nulla. Interessante il basso utilizzo del piano a induzione, forse legato alla difficolta’ di interfacce touchscreen.
ogg_labels <- c(
"D28b_1" = "Moka",
"D28b_2" = "Macch. caffe con app",
"D28b_3" = "Induzione manopole a scatti",
"D28b_4" = "Microonde manopole a scatti",
"D28b_5" = "Friggitrice aria con app",
"D28b_6" = "Dosatori a spruzzo",
"D28b_7" = "Forno manopole/acustico",
"D28b_8" = "Bistecchiera con sensore",
"D28b_9" = "Sportelli a ribalta",
"D28b_10" = "Frigo con allarme sonoro",
"D28b_11" = "Piano gas manopole a scatti",
"D28b_12" = "Guanti da cucina"
)
ogg_df <- dati %>%
select(D1, starts_with("D28b_")) %>%
pivot_longer(-D1, names_to = "Oggetto", values_to = "Uso") %>%
mutate(
Uso = as.numeric(Uso),
Oggetto_lab = ogg_labels[Oggetto]
)
ggplot(ogg_df, aes(x = reorder(Oggetto_lab, Uso,
FUN = function(x) mean(x, na.rm = TRUE)),
y = Uso)) +
geom_boxplot(fill = "#B6D7A8", alpha = 0.6, width = 0.4, outlier.shape = NA) +
geom_jitter(aes(color = D1), width = 0.12, size = 2.5, alpha = 0.8) +
scale_color_brewer(palette = "Dark2", name = "Soggetto") +
coord_flip() +
scale_y_continuous(breaks = 0:5) +
labs(x = "", y = "Frequenza d'uso (0-5)",
title = "Utilizzo di oggetti da cucina adattati") +
theme_minimal(base_size = 12)
tech_labels <- c(
"D55_1" = "Alexa/Siri/Google",
"D55_2" = "App lettura assistita",
"D55_3" = "Lettore testo automatico",
"D55_4" = "App supporto remoto",
"D55_5" = "App riconoscimento oggetti",
"D55_6" = "Termometro parlante",
"D55_7" = "Indicatore livello liquido",
"D55_8" = "Auricolari",
"D55_9" = "Orologio polso digitale",
"D55_10" = "Altro"
)
tech_df <- dati %>%
select(D1, paste0("D55_", 1:10)) %>%
pivot_longer(-D1, names_to = "Dispositivo", values_to = "Uso") %>%
mutate(
Uso = as.numeric(Uso),
Dispositivo_lab = tech_labels[Dispositivo]
)
ggplot(tech_df %>% filter(Dispositivo_lab != "Altro"),
aes(x = reorder(Dispositivo_lab, Uso,
FUN = function(x) mean(x, na.rm = TRUE)),
y = Uso)) +
geom_boxplot(fill = "#D4A6C8", alpha = 0.6, width = 0.4, outlier.shape = NA) +
geom_jitter(aes(color = D1), width = 0.12, size = 2.5, alpha = 0.8) +
scale_color_brewer(palette = "Dark2", name = "Soggetto") +
coord_flip() +
scale_y_continuous(breaks = 0:5) +
labs(x = "", y = "Frequenza d'uso (0-5)",
title = "Utilizzo di dispositivi tecnologici in cucina") +
theme_minimal(base_size = 12)
Insight: Gli assistenti vocali (Alexa/Siri/Google) emergono come la tecnologia piu’ adottata in cucina. Le app di riconoscimento oggetti e lettura assistita hanno adozione variabile. Dispositivi specializzati come il termometro parlante e l’indicatore di livello liquido restano poco diffusi nonostante il loro potenziale utilita’.
fb_labels <- c(
"D44_1" = "Vibrazioni\nstati diversi",
"D44_2" = "Vibrazioni\nposizioni diverse",
"D44_3" = "Suoni\nstati diversi",
"D44_4" = "Suoni\nposizioni diverse"
)
fb_df <- dati %>%
select(D1, D44_1, D44_2, D44_3, D44_4) %>%
pivot_longer(-D1, names_to = "Modalita", values_to = "Preferenza") %>%
mutate(
Preferenza = as.numeric(Preferenza),
Modalita_lab = fb_labels[Modalita],
Tipo = ifelse(grepl("Vibraz", Modalita_lab), "Vibrazione", "Suono")
)
ggplot(fb_df, aes(x = Modalita_lab, y = Preferenza, fill = Tipo)) +
geom_boxplot(alpha = 0.6, width = 0.4, outlier.shape = NA) +
geom_jitter(width = 0.1, size = 3, alpha = 0.7) +
scale_fill_manual(values = c("Vibrazione" = "#EDC948", "Suono" = "#76B7B2")) +
scale_y_continuous(breaks = 0:5) +
labs(x = "", y = "Preferenza (0-5)",
title = "Preferenze per modalita' di feedback sensoriale") +
theme_minimal(base_size = 13) +
theme(legend.position = "top")
int_labels <- c(
"D45_1" = "Touchscreen",
"D45_2" = "Pulsanti fisici",
"D45_3" = "Manopole\na scatti",
"D45_4" = "Gommini/\netichette"
)
int_df <- dati %>%
select(D1, D45_1, D45_2, D45_3, D45_4) %>%
pivot_longer(-D1, names_to = "Interfaccia", values_to = "Preferenza") %>%
mutate(
Preferenza = as.numeric(Preferenza),
Interfaccia_lab = int_labels[Interfaccia]
)
ggplot(int_df, aes(x = reorder(Interfaccia_lab, Preferenza,
FUN = function(x) mean(x, na.rm = TRUE)),
y = Preferenza)) +
geom_boxplot(fill = "#FF9D9A", alpha = 0.6, width = 0.4, outlier.shape = NA) +
geom_jitter(aes(color = D1), width = 0.1, size = 3, alpha = 0.7) +
scale_color_brewer(palette = "Dark2", name = "Soggetto") +
scale_y_continuous(breaks = 0:5) +
labs(x = "", y = "Preferenza (0-5)",
title = "Preferenze per tipo di interfaccia fisica") +
theme_minimal(base_size = 13)
Insight critico: Il confronto tra interfacce fisiche e’ particolarmente informativo per il design. Le manopole a scatti e i pulsanti fisici tendono ad essere preferiti rispetto ai touchscreen, confermando che il feedback tattile e’ cruciale per l’usabilita’. I gommini/etichette tattili rappresentano una soluzione low-tech ma molto apprezzata.
des_labels <- c(
"D58_1" = "Dispositivo\nversare con precisione",
"D58_2" = "Navigazione\ncon suono",
"D58_3" = "Info\nin Braille",
"D58_4" = "Navigazione\ncon vibrazioni",
"D58_5" = "Manipolazione\ncon vibrazioni",
"D58_6" = "Pavimentazione\nin rilievo"
)
des_df <- dati %>%
select(D1, paste0("D58_", 1:6)) %>%
pivot_longer(-D1, names_to = "Tecnologia", values_to = "Utilita") %>%
mutate(
Utilita = as.numeric(Utilita),
Tecnologia_lab = des_labels[Tecnologia]
)
des_summary <- des_df %>%
group_by(Tecnologia_lab) %>%
summarise(
Media = mean(Utilita, na.rm = TRUE),
DS = sd(Utilita, na.rm = TRUE),
.groups = "drop"
) %>%
arrange(desc(Media))
ggplot(des_df, aes(x = reorder(Tecnologia_lab, Utilita,
FUN = function(x) mean(x, na.rm = TRUE)),
y = Utilita)) +
geom_boxplot(fill = "#86BCB6", alpha = 0.6, width = 0.4, outlier.shape = NA) +
geom_jitter(aes(color = D1), width = 0.1, size = 3, alpha = 0.7) +
scale_color_brewer(palette = "Dark2", name = "Soggetto") +
coord_flip() +
scale_y_continuous(breaks = 0:5) +
labs(x = "", y = "Utilita' percepita (0-5)",
title = "Utilita' percepita di tecnologie assistive proposte") +
theme_minimal(base_size = 12)
des_summary %>%
mutate(across(where(is.numeric), ~round(., 2))) %>%
rename(Tecnologia = Tecnologia_lab) %>%
kable(caption = "Utilita' percepita delle tecnologie proposte") %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
| Tecnologia | Media | DS | ||||
|---|---|---|---|---|---|---|
| Info in Braille |
4.5
versare con precisione
|
4.1
con vibrazioni
|
2.3
con vibrazioni
|
2.0
con suono
|
1.5
in rilievo
|
0.6
|
profili <- dati %>%
transmute(
Soggetto = D1,
`Uso cucina` = D21_1,
Agio = D21_2,
Indipendenza = D21_3,
`Impatto deficit` = D21_4,
Ordine = D48_1,
Pulizia = D49_1,
`Efficacia strat.` = D41_1,
`Facilita movim.` = D42_1
) %>%
mutate(across(-Soggetto, as.numeric))
profili_long <- profili %>%
pivot_longer(-Soggetto, names_to = "Dimensione", values_to = "Punteggio")
ggplot(profili_long, aes(x = Dimensione, y = Soggetto, fill = Punteggio)) +
geom_tile(color = "white", linewidth = 1) +
geom_text(aes(label = Punteggio), size = 4, fontface = "bold") +
scale_fill_gradient2(low = "#2166AC", mid = "#F7F7F7", high = "#B2182B",
midpoint = 2.5, limits = c(0, 5),
name = "Punteggio\n(0-5)") +
labs(x = "", y = "",
title = "Profili individuali: dimensioni chiave dell'esperienza in cucina",
subtitle = "Colori: blu = basso, rosso = alto") +
theme_minimal(base_size = 12) +
theme(axis.text.x = element_text(angle = 35, hjust = 1, size = 10),
panel.grid = element_blank())
aperte <- dati %>%
transmute(
Soggetto = D1,
`Senso piu usato in cucina` = D22,
`Strategie orientamento` = D40,
`Incidenti frequenti` = D54,
`Cosa manca in cucina` = D59,
`Note aggiuntive` = D60
)
for (i in 1:nrow(aperte)) {
cat("\n\n### ", aperte$Soggetto[i], "\n\n")
for (col in colnames(aperte)[-1]) {
val <- aperte[[col]][i]
if (!is.na(val) && val != "") {
cat("**", col, ":** ", val, "\n\n", sep = "")
}
}
}
Senso piu usato in cucina: Tatto, per sentire dove sono le cose
Strategie orientamento: Ho memorizzato tutti i punti e non ho riferimenti specifici
Incidenti frequenti: Caduta di stoviglie, utensili e cibo. Raramente qualche scottatura con le resistenze del forno.
Cosa manca in cucina: Un corso per migliorare le abilità in cucina. Ad oggi sono mal impostati
Note aggiuntive: No
Senso piu usato in cucina: Tutti. Se bolle la pasta ascolto i rumori, oppure mi aiuto con gli odori ed il tatto per riconoscere le cose…. Infine il gusto per verificare che il cibo sia cotto
Strategie orientamento: No perché è piccola, non li ho
Incidenti frequenti: Bruciare cibo, un elettrodomestico ha preso fuoco
Cosa manca in cucina: Un robottino che cucini tutto
Senso piu usato in cucina: Tatto ed olfatto, metto un cucchiaio sul bordo della pentola se vibra l’acqua sta bollendo
Strategie orientamento: No, la configurazione la conosco bene e mi muovo a memoria
Incidenti frequenti: Ustionarmi e versare fuori i liquidi per terra
Cosa manca in cucina: Apparecchiature accessibili e più sicure
Senso piu usato in cucina: Tatto per la percezione del calore e la posizione delle stoviglie. A volte l’olfatto per distinguere gli alimenti (olio, aceto e spezie)
Strategie orientamento: Il tavolo, il frigorifero sono i miei punti riferimento. Ma ho la mappatura chiara delle posizioni di tutto, anche degli oggetti appoggiati sui ripiani, tavolo, ecc…
Incidenti frequenti: Scottatura
Cosa manca in cucina: Un pratico lettore di etichette
Senso piu usato in cucina: L’olfatto perché è molto sviluppato, il tatto per riconoscere gli oggetti ed il gusto
Strategie orientamento: Il calorifero all’entrata della cucina
Incidenti frequenti: Scottato con la pentola, mi sono tagliato con un coltello, ho rovesciato farina, zucchero
Cosa manca in cucina: Ci vorrebbe una bilancia parlante e un forno parlante
Note aggiuntive: Un coltello adatto alle persone non vedenti
Senso piu usato in cucina: Li uso tutti, soprattutto quando cucino. Devo stare nel silenzio assoluto (no tv o musica) perché altrimenti gli altri sensi subiscono interferenze. Non gradisco neppure che mi parlino, per non distrarmi.
Strategie orientamento: Le pareti, mobili…. L’ho disposta in modo da orientarmi. Me la sono fatta fare su misura per come la desideravo
Incidenti frequenti: Scottarsi, fare cadere le cose a terra
Cosa manca in cucina: Penso di no
# Assegnazione robusta: qualsiasi valore che inizia con "S" = congenita
dati$nascita_group <- ifelse(grepl("^S", dati$D9, ignore.case = TRUE),
"Congenita", "Acquisita")
diff_by_nascita <- dati %>%
select(D1, nascita_group, starts_with("D32_")) %>%
pivot_longer(starts_with("D32_"), names_to = "Attivita", values_to = "Difficolta") %>%
mutate(
Difficolta = as.numeric(Difficolta),
Attivita_lab = diff_labels[Attivita]
)
media_nascita <- diff_by_nascita %>%
group_by(nascita_group) %>%
summarise(
Media_globale = mean(Difficolta, na.rm = TRUE),
DS = sd(Difficolta, na.rm = TRUE),
.groups = "drop"
)
media_nascita %>%
kable(caption = "Difficolta' media per onset della cecita'") %>%
kable_styling(bootstrap_options = c("striped"), full_width = FALSE)
| nascita_group | Media_globale | DS |
|---|---|---|
| Acquisita | 2.166667 | 1.923685 |
| Congenita | 2.516667 | 1.651827 |
# Calcolo medie per gruppo separatamente per evitare problemi con pivot_wider
media_congenita <- diff_by_nascita %>%
filter(nascita_group == "Congenita") %>%
group_by(Attivita_lab) %>%
summarise(Congenita = mean(Difficolta, na.rm = TRUE), .groups = "drop")
media_acquisita <- diff_by_nascita %>%
filter(nascita_group == "Acquisita") %>%
group_by(Attivita_lab) %>%
summarise(Acquisita = mean(Difficolta, na.rm = TRUE), .groups = "drop")
confronto <- inner_join(media_congenita, media_acquisita, by = "Attivita_lab") %>%
mutate(Differenza = Acquisita - Congenita)
ggplot(confronto, aes(x = Congenita, y = Acquisita)) +
geom_abline(slope = 1, intercept = 0, linetype = "dashed", color = "grey50") +
geom_point(aes(size = abs(Differenza),
color = ifelse(Differenza > 0, "Piu' difficile\nse acquisita",
"Piu' difficile\nse dalla nascita")),
alpha = 0.7) +
geom_text(aes(label = Attivita_lab), size = 2.5, vjust = -0.8,
check_overlap = TRUE) +
scale_color_manual(values = c("Piu' difficile\nse acquisita" = "#E15759",
"Piu' difficile\nse dalla nascita" = "#4E79A7"),
name = "") +
scale_size_continuous(range = c(2, 8), guide = "none") +
scale_x_continuous(limits = c(0, 5)) +
scale_y_continuous(limits = c(0, 5)) +
labs(x = "Difficolta' media - Non vedenti dalla nascita",
y = "Difficolta' media - Cecita' acquisita",
title = "Confronto difficolta': cecita' congenita vs acquisita",
subtitle = "Punti sopra la diagonale = piu' difficile per cecita' acquisita") +
theme_minimal(base_size = 12) +
theme(legend.position = "top")
Insight: Questo confronto, pur con tutte le cautele dovute alla dimensione campionaria (3 vs 3), suggerisce che le persone con cecita’ acquisita possano avere maggiori difficolta’ in alcune attivita’, probabilmente perche’ le persone non vedenti dalla nascita hanno sviluppato strategie compensative consolidate nel tempo.
cor_vars <- dati %>%
select(D3, D21_1, D21_2, D21_3, D21_4, D24_1, D41_1, D42_1, D48_1, D49_1) %>%
mutate(across(everything(), as.numeric))
colnames(cor_vars) <- c("Eta", "Uso cucina", "Agio", "Indipendenza",
"Impatto deficit", "Frequenza cucinare",
"Efficacia strategie", "Facilita movimento",
"Importanza ordine", "Importanza pulizia")
cor_matrix <- cor(cor_vars, use = "pairwise.complete.obs", method = "spearman")
cor_melted <- melt(cor_matrix)
ggplot(cor_melted, aes(x = Var1, y = Var2, fill = value)) +
geom_tile(color = "white") +
geom_text(aes(label = round(value, 2)), size = 3) +
scale_fill_gradient2(low = "#2166AC", high = "#B2182B", mid = "white",
midpoint = 0, limit = c(-1, 1),
name = "Spearman\nrho") +
labs(title = "Matrice di correlazione (Spearman) tra dimensioni chiave",
subtitle = "N=6 - interpretare con estrema cautela") +
theme_minimal(base_size = 11) +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
axis.title = element_blank())
Avvertenza: Con N=6, le correlazioni sono estremamente instabili. Vengono riportate solo a scopo esplorativo per generare ipotesi da testare su campioni piu’ ampi. Si usa il coefficiente di Spearman per la robustezza su piccoli campioni con scale ordinali.
Il gap autonomia-barriere: I partecipanti riportano buoni livelli di agio e indipendenza in cucina, pur riconoscendo un forte impatto del deficit visivo. Questo paradosso apparente si spiega con le strategie compensative elaborate nel tempo, che meritano ulteriore indagine.
La gerarchia delle difficolta’ e’ legata al canale sensoriale: Le attivita’ piu’ difficili sono quelle che richiedono informazioni visive difficilmente sostituibili (leggere etichette, valutare la cottura, identificare contenuti). Le attivita’ con possibilita’ di feedback tattile o uditivo risultano piu’ gestibili.
Il feedback tattile batte il digitale: La preferenza per manopole a scatti, pulsanti fisici e etichette tattili rispetto ai touchscreen ha un’implicazione diretta per il design di elettrodomestici accessibili. La tendenza del mercato verso interfacce touch e’ in contrasto con le esigenze di questa popolazione.
Assistenti vocali come tecnologia ponte: Alexa/Siri/Google sono la tecnologia assistiva piu’ adottata in cucina, fungendo da “interfaccia universale” che bypassa la necessita’ di interazione visiva con i dispositivi.
Cecita’ congenita vs acquisita: I pattern preliminari suggeriscono differenze nei profili di difficolta’ tra chi e’ non vedente dalla nascita e chi ha perso la vista successivamente, con possibili implicazioni per interventi riabilitativi personalizzati.