1 Introduzione

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

2 Profilo del Campione

2.1 Demografia

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)
Profilo demografico dei partecipanti
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).

2.2 Profilo visivo

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)
Profilo della disabilita’ visiva
Soggetto Non vedente dalla nascita Condizione Conosce Braille
1 Cecità totale,Ambliopia Sì, ma non lo uso
S002 No Retinite pigmentosa Sì, ma non lo uso
S003 Cecità totale Sì e lo uso
S004 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.

3 Autonomia e Comfort in Cucina

3.1 Autovalutazione (Scale 0-5)

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)
Statistiche descrittive - Autovalutazione cucina (0-5)
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.

3.2 Chi cucina e soddisfazione

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)

4 Difficolta’ nelle Attivita’ di Cucina

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")
Ranking delle difficolta’ (dalla piu’ alla meno difficile)
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.

4.1 Clustering delle difficolta’

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.

5 Uso degli Elettrodomestici

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.

6 Strumenti Adattati e Tecnologie Assistive

6.1 Oggetti specializzati per cucina

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)

6.2 Dispositivi tecnologici in cucina

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’.

7 Preferenze per Interfacce e Feedback

7.1 Modalita’ di feedback preferite

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

7.2 Interfacce fisiche preferite

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.

8 Tecnologie Desiderate

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)
Utilita’ percepita delle tecnologie proposte
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

9 Profili Individuali: Analisi Radar

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

10 Analisi delle Risposte Aperte

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 = "")
    }
  }
}

10.0.1 1

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

10.0.2 S002

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

10.0.3 S003

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

10.0.4 S004

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

10.0.5 S005

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

10.0.6 S006

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

11 Relazione tra Cecita’ dalla Nascita e Difficolta’

# 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)
Difficolta’ media per onset della cecita’
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.

12 Correlazioni tra Dimensioni Chiave

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.

13 Sintesi e Insight Principali

13.1 5 insights da llm

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

13.2 Limiti dello studio

  • Campione minimo (N=6): nessuna inferenza statistica e’ possibile
  • Campionamento non probabilistico: i risultati non sono generalizzabili
  • Bias di autoselezione: chi ha partecipato potrebbe essere piu’ autonomo della media
  • Scale auto-valutative: soggette a bias di desiderabilita’ sociale

13.3 Raccomandazioni per lo studio principale

  • Aumentare il campione ad almeno N=30 per permettere analisi inferenziali di base
  • Stratificare per onset della cecita’ (congenita vs acquisita) e grado (totale vs ipovisione)
  • Includere osservazioni comportamentali oltre alle autovalutazioni
  • Considerare un disegno mixed-methods per integrare dati quantitativi e qualitativi