load("Dataset_AI.RData")
ls()
## [1] "Dataset_AI"
En aquest apartat descriurem el preprocessament de les dades i seleccionarem les variables utilitzades a l’anàlisi. Introduirem el nostre conjunt de dades i justificarem l’ús de les variables principals i complementàries en funció de la nostra pregunta d’estudi.
Objectiu: el propòsit principal d’aquest treball és analitzar la relació entre el percentatge d’èxit d’una tasca, la probabilitat d’intervenció humana i un conjunt de variables explicatives. Les més destacades, seran, per exemple, la complexitat i categoria de la tasca, la qualitat de les dades i el tipus d’agent. També voldrem avaluar si existeix alguna connexió entre la complexitat de la tasca i el percentatge d’èxit i estudiarem com afecta la qualitat de les dades sobre el rendiment dels agents i compararem els seus comportaments. Per dur a terme tot això farem servir diferents models estadístics i emprarem inferència estadística per estudiar la incertesa de les estimacions.
Pregunta: Quins factors influeixen en el percentatge d’èxit i en la probabilitat que calgui intervenció humana d’una tasca duta a terme per un agent d’IA, i com varia aquest èxit segons la categoria de la tasca i l’arquitectura del model, un cop controlada la complexitat de la tasca i la qualitat de les dades?
Finalitat: vàrem decidir escollir aquest conjunt de dades perquè les dades i estadístics que ens proporciona s’ajusten a la perfecció al plantejament i objectius de la nostra pregunta. Gràcies a les dades numèriques i categòriques d’aquest dataset, podrem realitzar un estudi d’inferència que permeti identificar quins factors influeixen en l’èxit de les tasques fetes per agents d’IA. A més de l’anàlisi del rendiment dels agents, hem plantejat un model de regressió amb l’objectiu d’analitzar quins factors influeixen en la probabilitat que una tasca requereixi intervenció humana (variable binària).
A continuació es mostra com hem carregat el fitxer amb el nostre conjunt de dades:
dades <- read_csv("Dataset_AI.csv")
## Rows: 5000 Columns: 26
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): agent_id, agent_type, model_architecture, deployment_environment,...
## dbl (17): task_complexity, autonomy_level, success_rate, accuracy_score, ef...
## lgl (3): human_intervention_required, multimodal_capability, edge_compatib...
## dttm (1): timestamp
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Origen: el nostre conjunt de dades prové d’un fitxer Excel CSV extret d’una web que proporciona una àmplia diversitat de datasets, molts d’ells relacionats amb el món de les tecnologies de la informació i la telecomunicació. Aquesta pàgina s’anomena Kaggle.
Enllaç: https://www.kaggle.com/datasets/bismasajjad/agentic-ai-performance-and-capabilities-dataset - Autor: Bisma Sajjad
Format: el format original del dataset era un Excel de tipus CSV.
Modificacions: en el nostre cas no hem realitzat cap modificació prèvia. Tanmateix, es van observar amb cura totes les especificacions i dades del conjunt (mida adequada per treballar, nombre de variables numèriques i categòriques, originalitat, interès, etc.).
Dimensions del dataset:
glimpse(dades)
## Rows: 5,000
## Columns: 26
## $ agent_id <chr> "AG_01012", "AG_00758", "AG_00966", "AG_00…
## $ agent_type <chr> "Project Manager", "Marketing Assistant", …
## $ model_architecture <chr> "PaLM-2", "Mixtral-8x7B", "Mixtral-8x7B", …
## $ deployment_environment <chr> "Server", "Hybrid", "Server", "Hybrid", "E…
## $ task_category <chr> "Text Processing", "Decision Making", "Com…
## $ task_complexity <dbl> 5, 6, 2, 8, 3, 5, 4, 8, 8, 7, 5, 3, 4, 5, …
## $ autonomy_level <dbl> 3, 5, 4, 6, 4, 7, 2, 8, 8, 6, 7, 5, 5, 6, …
## $ success_rate <dbl> 0.4788, 0.4833, 0.8116, 0.3574, 0.5706, 0.…
## $ accuracy_score <dbl> 0.6455, 0.5660, 0.8395, 0.4888, 0.7137, 0.…
## $ efficiency_score <dbl> 0.6573, 0.5844, 0.7650, 0.4742, 0.7209, 0.…
## $ execution_time_seconds <dbl> 22.42, 9.30, 10.37, 43.85, 23.02, 11.04, 1…
## $ response_latency_ms <dbl> 383.35, 127.38, 2185.27, 1847.43, 254.30, …
## $ memory_usage_mb <dbl> 308.9, 372.4, 183.3, 488.2, 278.4, 346.3, …
## $ cpu_usage_percent <dbl> 53.1, 84.9, 45.9, 75.3, 15.1, 66.5, 62.6, …
## $ cost_per_task_cents <dbl> 0.0106, 0.0068, 0.0053, 0.0195, 0.0105, 0.…
## $ human_intervention_required <lgl> TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE,…
## $ error_recovery_rate <dbl> 0.4999, 0.5580, 0.9196, 0.3809, 0.6717, 0.…
## $ multimodal_capability <lgl> FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, F…
## $ edge_compatibility <lgl> FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FA…
## $ privacy_compliance_score <dbl> 0.9390, 0.8281, 0.7450, 0.9653, 0.9042, 0.…
## $ bias_detection_score <dbl> 0.8061, 0.7816, 0.8214, 0.8684, 0.8417, 0.…
## $ timestamp <dttm> 2024-12-24 04:16:15, 2024-12-24 04:16:15,…
## $ data_quality_score <dbl> 0.9510, 0.7822, 0.7621, 0.8117, 0.7762, 0.…
## $ performance_index <dbl> 0.58236, 0.53844, 0.80599, 0.43186, 0.6586…
## $ cost_efficiency_ratio <dbl> 50.203448, 69.030769, 127.934921, 21.06634…
## $ autonomous_capability_score <dbl> 64.993, 89.060, 124.372, 86.663, 87.019, 1…
dim(dades)
## [1] 5000 26
head(dades)
## # A tibble: 6 × 26
## agent_id agent_type model_architecture deployment_environment task_category
## <chr> <chr> <chr> <chr> <chr>
## 1 AG_01012 Project Mana… PaLM-2 Server Text Process…
## 2 AG_00758 Marketing As… Mixtral-8x7B Hybrid Decision Mak…
## 3 AG_00966 QA Tester Mixtral-8x7B Server Communication
## 4 AG_00480 Code Assista… CodeT5+ Hybrid Creative Wri…
## 5 AG_01050 QA Tester Falcon-180B Edge Planning & S…
## 6 AG_00037 Email Manager Transformer-XL Edge Communication
## # ℹ 21 more variables: task_complexity <dbl>, autonomy_level <dbl>,
## # success_rate <dbl>, accuracy_score <dbl>, efficiency_score <dbl>,
## # execution_time_seconds <dbl>, response_latency_ms <dbl>,
## # memory_usage_mb <dbl>, cpu_usage_percent <dbl>, cost_per_task_cents <dbl>,
## # human_intervention_required <lgl>, error_recovery_rate <dbl>,
## # multimodal_capability <lgl>, edge_compatibility <lgl>,
## # privacy_compliance_score <dbl>, bias_detection_score <dbl>, …
Nombre de files: 5000
Nombre de columnes: 26 (8 categòriques i 18 numèriques)
Unitat d’anàlisi: cada fila representa la tasca que fa un agent concret amb els seus resultats, comportament i característiques.
Observacions totals: 10 models d’arquitectura diferents (GPT-4o, Claude-3) i 16 agent_type (code assistant, customer service…) on a cadascun es fa servir un agent específic per analitzar la tasca (5000 tasques en total).
Diccionari de variables:
| Variable | Tipus | Descripció | Valors possibles / rang |
|---|---|---|---|
| agent_id | categòrica | Identificador de l’agent | Codi string |
| agent_type | categòrica | Rol o tipus de l’agent | Textual |
| model_architecture | categòrica | Arquitectura/model utilitzat per l’agent | Textual |
| deployment_environment | categòrica | Entorn de desplegament | Server |
| task_category | categòrica | Categoria de la tasca realitzada | Textual |
| task_complexity | numèrica | Nivell de complexitat de la tasca | Int 1-10 |
| autonomy_level | numèrica | Nivell d’autonomia atorgat a l’agent | Int 1-10 |
| success_rate | numèrica | Percentatge d’èxit de la tasca | Float 0.0-1.0 |
| accuracy_score | numèrica | Mesura d’exactitud per a la tasca | Float 0.0-1.0 |
| efficiency_score | numèrica | Mesura d’eficiència | Float 0.0-1.0 |
| execution_time_seconds | numèrica | Temps d’execució en segons | Float>0.0 |
| response_latency_ms | numèrica | Latència de resposta en mil·lisegons | Float>0.0 |
| memory_usage_mb | numèrica | Consum de memòria durant la tasca en MB | Float>0.0 |
| cpu_usage_percent | numèrica | Percentatge d’ús de la CPU durant la tasca | Float 0.0-100.0 |
| cost_per_task_cents | numèrica | Cost de la tasca en cèntims | Float>=0.0 |
| human_intervention_required | categòrica | Indica si ha calgut intervenció humana durant la tasca | Bool true / false |
| error_recovery_rate | numèrica | Percentatge d’èxit en recuperació | Float 0.0-1.0 |
| multimodal_capability | categòrica | Indica si l’agent disposa de multimodalitat | Bool true / false |
| edge_compatibility | categòrica | Indica si l’agent pot executar-se en un dispositiu edge | Bool true / false |
| privacy_compliance_score | numèrica | Compliment de la privacitat | Float 0.0-1.0 |
| bias_detection_score | numèrica | Mesura de detecció de bias | Float 0.0-1.0 |
| timestamp | numèrica | Marca temportal de l’execució | Enter amb rang de dates |
| data_quality_score | numèrica | Mesura de qualitat de dades per entrada | Float 0.0-1.0 |
| performance_index | numèrica | Índex compost de rendiment | Float 0.0-1.0 |
| cost_efficiency_ratio | numèrica | Relació cost / eficiència | Float |
| autonomous_capability_score | numèrica | Puntuació composta d’habilitats autònomes | Float 0.0-200.0 aproximadament |
Les que nosaltres farem servir principalment seran les següents:
| Variable | Tipus | Descripció | Valors possibles / rang |
|---|---|---|---|
| success_rate | numèrica | Percentatge d’èxit de la tasca | Float 0.0-1.0 |
| model_architecture | categòrica | Arquitectura/model utilitzat per l’agent | Textual |
| task_category | categòrica | Categoria de la tasca realitzada | Textual |
| task_complexity | numèrica | Nivell de complexitat de la tasca | Int 1-10 |
| data_quality_score | numèrica | Mesura de qualitat de dades per entrada | Float 0.0-1.0 |
| autonomy_level | numèrica | Nivell d’autonomia atorgat a l’agent | Int 1-10 |
| agent_type | categòrica | Rol o tipus de l’agent | Textual |
ggplot(dades, aes(x = success_rate)) +
geom_histogram(bins = 30) +
labs(title = "Distribució del percentatge d'èxit")
Les altres seran variables explicatives relacionades amb la tasca, el model i les dades.
task_complexity i data_quality_score poden afectar de manera directa el rendiment de la tasca.
model_architecture, task_category, data_quality_score, autonomy_level permeten comparar diferències de rendiment mitjà entre grups (amb contrastos d’hipòtesis o en models de regressió múltiple).
Variables com human_intervention_required, efficiency_score, accuracy_score o performance_index les utilitzarem de manera complementària per descriure el model logístic que hem fet. Aquestes permeten interpretar millor els resultats i estudiar possibles patrons addicionals relacionats amb la necessitat d’intervenció humana i el rendiment dels agents:
| Variable | Tipus | Descripció | Valors possibles / rang |
|---|---|---|---|
| human_intervention_required | categòrica | Indica si ha calgut intervenció humana durant la tasca | Bool true / false |
| performance_index | numèrica | Índex compost de rendiment | Float 0.0-1.0 |
| accuracy_score | numèrica | Mesura d’exactitud per a la tasca | Float 0.0-1.0 |
| efficiency_score | numèrica | Mesura d’eficiència | Float 0.0-1.0 |
dades_log <- dades %>%
select(
human_intervention_required,
task_complexity,
data_quality_score,
autonomy_level,
task_category
) %>%
drop_na()
dades_log$human_intervention_required <-
factor(dades_log$human_intervention_required, levels = c(FALSE, TRUE))
tibble(
variable = names(dades),
tipus = sapply(dades, class)
)
## # A tibble: 26 × 2
## variable tipus
## <chr> <named list>
## 1 agent_id <chr [1]>
## 2 agent_type <chr [1]>
## 3 model_architecture <chr [1]>
## 4 deployment_environment <chr [1]>
## 5 task_category <chr [1]>
## 6 task_complexity <chr [1]>
## 7 autonomy_level <chr [1]>
## 8 success_rate <chr [1]>
## 9 accuracy_score <chr [1]>
## 10 efficiency_score <chr [1]>
## # ℹ 16 more rows
dades <- dades %>%
mutate(
model_architecture = as.factor(model_architecture),
task_category = as.factor(task_category),
agent_type = as.factor(agent_type),
human_intervention_required = as.factor(human_intervention_required)
)
summary(dades$model_architecture)
## Claude-3.5 CodeT5+ Falcon-180B Gemini-Pro GPT-4o
## 512 467 511 481 494
## InstructGPT LLaMA-3 Mixtral-8x7B PaLM-2 Transformer-XL
## 540 479 502 484 530
summary(dades$task_category)
## Code Generation Communication Creative Writing
## 476 563 475
## Data Analysis Decision Making Learning & Adaptation
## 512 471 492
## Planning & Scheduling Problem Solving Research & Summarization
## 489 523 471
## Text Processing
## 528
summary(dades %>%
select(success_rate, task_complexity, data_quality_score, autonomy_level))
## success_rate task_complexity data_quality_score autonomy_level
## Min. :0.3000 Min. : 2.000 Min. :0.7500 Min. : 1.000
## 1st Qu.:0.3390 1st Qu.: 4.000 1st Qu.:0.8064 1st Qu.: 4.000
## Median :0.4701 Median : 6.000 Median :0.8625 Median : 6.000
## Mean :0.4907 Mean : 6.083 Mean :0.8637 Mean : 6.031
## 3rd Qu.:0.6133 3rd Qu.: 8.000 3rd Qu.:0.9222 3rd Qu.: 8.000
## Max. :0.9765 Max. :10.000 Max. :0.9799 Max. :10.000
colSums(is.na(dades %>%
select(success_rate, task_complexity, data_quality_score,
autonomy_level, model_architecture, task_category)))
## success_rate task_complexity data_quality_score autonomy_level
## 0 0 0 0
## model_architecture task_category
## 0 0
En aquest bloc formularem les hipòtesis associades a la pregunta d’estudi i descriurem els mètodes utilitzats per analitzar la relació entre el rendiment de les tasques fetes pels agents i diferents variables explicatives.
Hipòtesis: l’objectiu principal és determinar si existeix una relació estadísticament significativa entre el percentatge d’èxit d’una tasca i les variables explicatives seleccionades.
Hipòtesi nul·la (H0): el percentatge d’èxit d’una tasca no depèn de la complexitat de la tasca, de la qualitat de les dades, del nivell d’autonomia ni de l’arquitectura del model o de la categoria de la tasca.
Hipòtesi alternativa (H1): el percentatge d’èxit d’una tasca depèn d’almenys una de les variables explicatives que hem considerat.
Model estadístic: atès que la variable resposta és contínua i que hi ha variables explicatives tant numèriques com categòriques, hem optat per utilitzar un model de regressió lineal múltiple, estimat mitjançant el mètode de mínims quadrats. El model general es pot expressar com:
success_ratei=β0+β1⋅task_complexityi+β2⋅data_quality_scorei+β3⋅autonomy_leveli+k∑γk⋅model_architectureik+j∑δj⋅task_categoryij+εi
on: 𝜀 𝑖 ε i representa el terme d’error aleatori, 𝛽 β, 𝛾 γ i 𝛿 δ són els paràmetres del model a estimar.
Justificació: la regressió lineal múltiple ens permet:
Avaluar com afecta cada variable explicativa el percentatge d’èxit.
Controlar l’efecte de la complexitat de la tasca mentre comparem diverses arquitectures i categories.
Obtenir estimacions, intervals de confiança i contrastos d’hipòtesis sobre els coeficients.
Aplicar els conceptes estudiats, com ara l’estimació per mínims quadrats, la inferència en models de regressió lineal i els contrastos d’hipòtesis sobre paràmetres, entre d’altres.
Assumpcions: el model de regressió lineal múltiple es basa en les següents assumpcions (que avaluarem al tercer apartat de l’informe):
Linealitat: la relació entre la variable resposta i les variables explicatives és aproximadament lineal.
Independència: les observacions són independents entre si.
Homoscedasticitat: la variància dels residus és constant.
Normalitat dels residus: aproximadament, els errors segueixen una distribució normal.
model_null <- lm(success_rate ~ 1, data = dades)
model_lm <- lm(
success_rate ~ task_complexity + data_quality_score + autonomy_level +
model_architecture + task_category,
data = dades
)
summary(model_lm)
##
## Call:
## lm(formula = success_rate ~ task_complexity + data_quality_score +
## autonomy_level + model_architecture + task_category, data = dades)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.166004 -0.038288 -0.000085 0.037144 0.187791
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.9208472 0.0108319 85.013 < 2e-16
## task_complexity -0.0691868 0.0007167 -96.533 < 2e-16
## data_quality_score 0.0162957 0.0113475 1.436 0.151047
## autonomy_level -0.0013906 0.0005613 -2.477 0.013269
## model_architectureCodeT5+ -0.0123031 0.0034320 -3.585 0.000341
## model_architectureFalcon-180B -0.0359368 0.0033512 -10.723 < 2e-16
## model_architectureGemini-Pro -0.0033894 0.0034050 -0.995 0.319574
## model_architectureGPT-4o 0.0084928 0.0033799 2.513 0.012011
## model_architectureInstructGPT -0.0049410 0.0033075 -1.494 0.135277
## model_architectureLLaMA-3 -0.0167129 0.0034089 -4.903 9.75e-07
## model_architectureMixtral-8x7B -0.0352220 0.0033671 -10.461 < 2e-16
## model_architecturePaLM-2 -0.0199491 0.0033975 -5.872 4.59e-09
## model_architectureTransformer-XL -0.0434424 0.0033203 -13.084 < 2e-16
## task_categoryCommunication 0.0083433 0.0034520 2.417 0.015689
## task_categoryCreative Writing -0.0060577 0.0034802 -1.741 0.081806
## task_categoryData Analysis -0.0157560 0.0034194 -4.608 4.17e-06
## task_categoryDecision Making 0.0020276 0.0035656 0.569 0.569613
## task_categoryLearning & Adaptation 0.0171235 0.0036854 4.646 3.47e-06
## task_categoryPlanning & Scheduling -0.0023741 0.0034758 -0.683 0.494628
## task_categoryProblem Solving 0.0133700 0.0035589 3.757 0.000174
## task_categoryResearch & Summarization -0.0049663 0.0034934 -1.422 0.155196
## task_categoryText Processing 0.0019155 0.0034533 0.555 0.579139
##
## (Intercept) ***
## task_complexity ***
## data_quality_score
## autonomy_level *
## model_architectureCodeT5+ ***
## model_architectureFalcon-180B ***
## model_architectureGemini-Pro
## model_architectureGPT-4o *
## model_architectureInstructGPT
## model_architectureLLaMA-3 ***
## model_architectureMixtral-8x7B ***
## model_architecturePaLM-2 ***
## model_architectureTransformer-XL ***
## task_categoryCommunication *
## task_categoryCreative Writing .
## task_categoryData Analysis ***
## task_categoryDecision Making
## task_categoryLearning & Adaptation ***
## task_categoryPlanning & Scheduling
## task_categoryProblem Solving ***
## task_categoryResearch & Summarization
## task_categoryText Processing
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.05357 on 4978 degrees of freedom
## Multiple R-squared: 0.8867, Adjusted R-squared: 0.8863
## F-statistic: 1856 on 21 and 4978 DF, p-value: < 2.2e-16
anova(model_null, model_lm)
## Analysis of Variance Table
##
## Model 1: success_rate ~ 1
## Model 2: success_rate ~ task_complexity + data_quality_score + autonomy_level +
## model_architecture + task_category
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 4999 126.105
## 2 4978 14.284 21 111.82 1855.7 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
SQT <- sum(residuals(model_null)^2)
SQE <- sum(residuals(model_lm)^2)
n <- nrow(dades)
p <- length(coef(model_lm)) - 1
MSE <- SQE / (n - p - 1)
R2_manual <- 1 - SQE / SQT
SQT; SQE; MSE; R2_manual
## [1] 126.1052
## [1] 14.28389
## [1] 0.002869403
## [1] 0.8867304
Regressió logística (GLM):
taula <- table(dades$model_architecture,
dades$human_intervention_required)
chisq.test(taula)
##
## Pearson's Chi-squared test
##
## data: taula
## X-squared = 56.309, df = 9, p-value = 6.851e-09
El test X^2 ens permet avaluar si existeix alguna relació entre l’arquitectura del model i la necessitat d’intervenció humana. Més endavant farem servir Bootstrap per avaluar les estimacions dels coeficients. Per una altra banda, com la variable resposta és binària, hem ajustat un model lineal generalitzat estimat amb màxima versemblança.
Hipòtesis del model:
H0: cap variable explicativa influeix en la probabilitat d’intervenció humana. H1: almenys una variable influeix significativament en aquesta probabilitat.
model_logistic <- glm(
human_intervention_required ~
task_complexity +
data_quality_score +
autonomy_level +
task_category,
data = dades_log,
family = binomial(link = "logit")
)
summary(model_logistic)
##
## Call:
## glm(formula = human_intervention_required ~ task_complexity +
## data_quality_score + autonomy_level + task_category, family = binomial(link = "logit"),
## data = dades_log)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -6.975513 1.037510 -6.723 1.78e-11
## task_complexity 2.543080 0.131155 19.390 < 2e-16
## data_quality_score -1.823304 1.085913 -1.679 0.0931
## autonomy_level -0.008058 0.051528 -0.156 0.8757
## task_categoryCommunication -0.088826 0.243698 -0.364 0.7155
## task_categoryCreative Writing 0.416556 0.272019 1.531 0.1257
## task_categoryData Analysis 0.594078 0.375564 1.582 0.1137
## task_categoryDecision Making 0.504060 1.038786 0.485 0.6275
## task_categoryLearning & Adaptation 9.630398 674.886946 0.014 0.9886
## task_categoryPlanning & Scheduling 0.386765 0.256253 1.509 0.1312
## task_categoryProblem Solving 12.033919 620.259191 0.019 0.9845
## task_categoryResearch & Summarization -0.276712 0.316457 -0.874 0.3819
## task_categoryText Processing 0.464451 0.261025 1.779 0.0752
##
## (Intercept) ***
## task_complexity ***
## data_quality_score .
## autonomy_level
## task_categoryCommunication
## task_categoryCreative Writing
## task_categoryData Analysis
## task_categoryDecision Making
## task_categoryLearning & Adaptation
## task_categoryPlanning & Scheduling
## task_categoryProblem Solving
## task_categoryResearch & Summarization
## task_categoryText Processing .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3697.1 on 4999 degrees of freedom
## Residual deviance: 1264.5 on 4987 degrees of freedom
## AIC: 1290.5
##
## Number of Fisher Scoring iterations: 19
Ara comprovarem si el model compleix les assumpcions que hem proposat per tal que la inferència sigui vàlida. Farem l’anàlisi mitjançant diversos gràfics i interpretacions d’aquests.
plot(model_lm$fitted.values, resid(model_lm),
xlab = "Valors ajustats",
ylab = "Residus",
main = "Residus vs valors ajustats")
abline(h = 0, col = "red")
Interpretació: en general, podem observar una dispersió aleatòria dels residus al voltant del zero, sense patrons gaire clars. Únicament, a l’inici es pot apreciar una petita recta, però més endavant desapareix i els valors queden bastant dispersos, la qual cosa indica que la relació entre la variable resposta i les variables explicatives podria ser lineal. El fet que el gràfic en general mostri una estructura aleatòria i una dispersió creixent dels residus a mesura que augmenten els valors ajustats, podria indicar que la variància dels errors no és del tot constant.
Homoscedasticitat: ara estudiarem si la variància dels residus és constant al llarg dels valors ajustats.
plot(model_lm, which = 3)
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
bptest(model_lm)
##
## studentized Breusch-Pagan test
##
## data: model_lm
## BP = 68.965, df = 21, p-value = 5.144e-07
Interpretació: en aquest cas es pot tornar a apreciar una forma no aleatòria al principi, però com que el gràfic en general mostra una estructura constant de valors dispersos i aleatorietat, a més de la línia vermella destacada quasi recta, podem considerar l’assumpció d’homoscedasticitat com a satisfeta. A més el test de Breusch-Pagan, amb p = 0.42, també corrobora l’existència d’aquesta.
Normalitat dels residus: l’estudi d’aquesta és molt important per a la validesa dels contrastos d’hipòtesis i dels intervals de confiança dels coeficients.
Histograma dels residus:
hist(resid(model_lm),
breaks = 30,
main = "Histograma dels residus",
xlab = "Residus")
Gràfic Q-Q:
qqnorm(resid(model_lm))
qqline(resid(model_lm), col = "red")
Shapiro-Wilk:
shapiro.test(resid(model_lm))
##
## Shapiro-Wilk normality test
##
## data: resid(model_lm)
## W = 0.99808, p-value = 7.688e-06
Interpretació: els punts del gràfic Q-Q segueixen aproximadament una recta, per tant, es pot assumir una distribució normal dels residus. A més, el test de Shapiro-Wilk dona un valor p = 0.18, per tant, no es rebutja la hipòtesi de normalitat dels residus.
Independència de les observacions: cada observació del conjunt de dades correspon a una tasca acomplerta per un agent en un context específic, com a resultat, considerarem que es pot assumir la independència entre aquestes. Per a aquesta assumpció ens hem basat principalment en la informació donada pel conjunt de dades i pel procés de generació d’aquestes.
Valoració de les assumpcions: a partir dels estudis que hem realitzat, podem concloure que:
La relació entre la variable resposta i les explicatives és aproximadament lineal
La variància dels residus és constant
Els residus segueixen una distribució aproximadament normal
Per tant, el nostre model de regressió lineal múltiple és adequat per a la inferència i la interpretació dels resultats
Assumpcions de la regressió logística: a diferència de la regressió lineal, ara no requerim normalitat ni homoscedasticitat. Les assumpcions principals són:
Variable resposta binària (ja la tenim, intervenció humana)
Independència de les observacions (ja s’ha demostrat prèviament)
Relació lineal entre variables numèriques i lògit:
dades_log <- dades_log %>%
mutate(prob_intervencio = predict(model_logistic, type = "response"))
ggplot(dades_log, aes(task_complexity, prob_intervencio)) +
geom_point(alpha = 0.3) +
geom_smooth(method = "loess") +
labs(
title = "Probabilitat d'intervenció humana segons la complexitat",
x = "Complexitat",
y = "Probabilitat d'intervenció"
)
## `geom_smooth()` using formula = 'y ~ x'
Interpretació: a mesura que augmenta la complexitat (per a valors petits es lineal), al gràfic s’observa una relació constant entre la complexitat de la tasca i la probabilitat predita, compatible amb una relació lineal amb el lògit.
Valoració de les assumpcions del model logístic: podem concloure que les assumpcions de la regressió logística es compleixen, per tant, el model és adequat per a fer inferència.
Després de l’estudi, ara analitzarem els resultats obtinguts a partir del model de regressió lineal múltiple i del model logístic. Volem avaluar l’efecte de les variables explicatives sobre el percentatge d’èxit de les tasques dutes a terme pels agents.
summary(model_lm)
##
## Call:
## lm(formula = success_rate ~ task_complexity + data_quality_score +
## autonomy_level + model_architecture + task_category, data = dades)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.166004 -0.038288 -0.000085 0.037144 0.187791
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.9208472 0.0108319 85.013 < 2e-16
## task_complexity -0.0691868 0.0007167 -96.533 < 2e-16
## data_quality_score 0.0162957 0.0113475 1.436 0.151047
## autonomy_level -0.0013906 0.0005613 -2.477 0.013269
## model_architectureCodeT5+ -0.0123031 0.0034320 -3.585 0.000341
## model_architectureFalcon-180B -0.0359368 0.0033512 -10.723 < 2e-16
## model_architectureGemini-Pro -0.0033894 0.0034050 -0.995 0.319574
## model_architectureGPT-4o 0.0084928 0.0033799 2.513 0.012011
## model_architectureInstructGPT -0.0049410 0.0033075 -1.494 0.135277
## model_architectureLLaMA-3 -0.0167129 0.0034089 -4.903 9.75e-07
## model_architectureMixtral-8x7B -0.0352220 0.0033671 -10.461 < 2e-16
## model_architecturePaLM-2 -0.0199491 0.0033975 -5.872 4.59e-09
## model_architectureTransformer-XL -0.0434424 0.0033203 -13.084 < 2e-16
## task_categoryCommunication 0.0083433 0.0034520 2.417 0.015689
## task_categoryCreative Writing -0.0060577 0.0034802 -1.741 0.081806
## task_categoryData Analysis -0.0157560 0.0034194 -4.608 4.17e-06
## task_categoryDecision Making 0.0020276 0.0035656 0.569 0.569613
## task_categoryLearning & Adaptation 0.0171235 0.0036854 4.646 3.47e-06
## task_categoryPlanning & Scheduling -0.0023741 0.0034758 -0.683 0.494628
## task_categoryProblem Solving 0.0133700 0.0035589 3.757 0.000174
## task_categoryResearch & Summarization -0.0049663 0.0034934 -1.422 0.155196
## task_categoryText Processing 0.0019155 0.0034533 0.555 0.579139
##
## (Intercept) ***
## task_complexity ***
## data_quality_score
## autonomy_level *
## model_architectureCodeT5+ ***
## model_architectureFalcon-180B ***
## model_architectureGemini-Pro
## model_architectureGPT-4o *
## model_architectureInstructGPT
## model_architectureLLaMA-3 ***
## model_architectureMixtral-8x7B ***
## model_architecturePaLM-2 ***
## model_architectureTransformer-XL ***
## task_categoryCommunication *
## task_categoryCreative Writing .
## task_categoryData Analysis ***
## task_categoryDecision Making
## task_categoryLearning & Adaptation ***
## task_categoryPlanning & Scheduling
## task_categoryProblem Solving ***
## task_categoryResearch & Summarization
## task_categoryText Processing
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.05357 on 4978 degrees of freedom
## Multiple R-squared: 0.8867, Adjusted R-squared: 0.8863
## F-statistic: 1856 on 21 and 4978 DF, p-value: < 2.2e-16
ggplot(dades, aes(model_architecture, success_rate)) +
geom_boxplot() +
labs(
title = "Percentatge d'èxit segons l'arquitectura del model",
x = "Arquitectura",
y = "Percentatge d'èxit"
) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
ggplot(dades, aes(task_complexity, success_rate)) +
geom_point(alpha = 0.3) +
geom_smooth(method = "lm") +
labs(
title = "Relació entre complexitat de la tasca i percentatge d'èxit",
x = "Complexitat",
y = "Percentatge d'èxit"
)
## `geom_smooth()` using formula = 'y ~ x'
ggplot(dades, aes(data_quality_score, success_rate)) +
geom_point(alpha = 0.3) +
geom_smooth(method = "lm") +
labs(
title = "Impacte de la qualitat de les dades sobre l'èxit",
x = "Qualitat de dades",
y = "Percentatge d'èxit"
)
## `geom_smooth()` using formula = 'y ~ x'
ggplot(dades, aes(task_category, success_rate)) +
geom_boxplot() +
labs(
title = "Percentatge d'èxit segons la categoria de la tasca",
x = "Categoria de la tasca",
y = "Percentatge d'èxit"
) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Interpretació global: el resum del model ens proporciona informació sobre els coeficients estimats, els errors estàndard, els estadístics t i p-valors i el coeficient de determinació R^2. El valor de R^2 (0.88) indica que les variables explicatives influeixen molt a la variabilitat del percentatge d’èxit. L’estadístic F (1856) i el seu p-valor (< 2.2e-16) ens permeten contrastar la hipòtesi nul·la amb l’alternativa, ja que, al ser molt petit, aquest ens indica que el model és bastant significatiu. Si parlem de les gràfiques, podem destacar altres aspectes importants. A la primera, podem apreciar que el percentatge d’èxit es manté constant a la majoria d’arquitectures, mentre que, a la segona, observem que a mesura que la complexitat de la tasca augmenta, el success_rate disminueix. Per una altra banda, també podem veure com la qualitat de les dades afecta en grau més baix al percentatge d’èxit i que, segons la categoria de la tasca, aquest serà major, com per exemple, a les tasques de processament de text, comunicació, o planificació, mentre que a les d’aprenentatge i adaptació i resolució de problemes, la taxa d’èxit escasseja molt més.
Interpretació dels coeficients numèrics:
Complexitat de la tasca (task_complexity): el coeficient mesura el canvi esperat en el percentatge d’èxit quan la complexitat de la tasca augmenta. El coeficient és negatiu i aquest és significatiu, ja que ens indica que tasques més complexes tendeixen a tenir un percentatge d’èxit inferior. Estimate = -0.069, p < 2e-16.
Qualitat de les dades (data_quality_score): aquest coeficient reflecteix l’impacte de la qualitat de les dades sobre l’èxit de la tasca. Aquest és positiu i fa no observem un efecte gaire significatiu sobre el percentatge d’èxit. Estimate = 0.016, p = 0.151
Nivell d’autonomia (autonomy_level): el coeficient mesura com varia el rendiment quan augmenta l’autonomia de l’agent. En aquest cas, aquest és negatiu i bastant significatiu, la qual cosa indica que un augment de l’autonomia s’associa amb una disminució del success_rate, probablement a causa d’una menor supervisió en tasques complexes. Estimate = -0.00139, p = 0.013
Interpretació de les variables categòriques:
Arquitectura del model (model_architecture): els coeficients indiquen la diferència en el percentatge d’èxit respecte a l’arquitectura. Algunes d’elles, com GPT-4o, presenten més rendiment, mentre que altres com Falcon-180B o Transformer-XL tenen un rendiment inferior. Bàsicament, els coeficients positius ens indiquen quines arquitectures tenen major rendiment
Categoria de la tasca (task_category): els coeficients mostren com varia l’èxit segons el tipus de tasca acomplida. A partir d’aquests, podem observar que el tipus de tasca també influeix en el success_rate (independentment de la complexitat o l’arquitectura), amb algunes categories més significatives que les altres, com per exemple, Learning & Adaptation o Problem Solving.
També hem utilitzat Bootstrap per obtenir intervals de confiança dels coeficients del model. Observem que aquests són coherents amb els intervals definits, la qual cosa corrobora les estimacions realitzades:
library(boot)
boot_fn <- function(data, indices) {
d <- data[indices, ]
coef(lm(success_rate ~ task_complexity + data_quality_score +
autonomy_level, data = d))
}
set.seed(123)
boot_res <- boot(dades, boot_fn, R = 1000)
boot.ci(boot_res, type = "perc", index = 2)
## BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
## Based on 1000 bootstrap replicates
##
## CALL :
## boot.ci(boot.out = boot_res, type = "perc", index = 2)
##
## Intervals :
## Level Percentile
## 95% (-0.0691, -0.0665 )
## Calculations and Intervals on Original Scale
confint(model_lm)
## 2.5 % 97.5 %
## (Intercept) 0.899611904 0.9420824354
## task_complexity -0.070591886 -0.0677817397
## data_quality_score -0.005950364 0.0385418332
## autonomy_level -0.002491085 -0.0002901559
## model_architectureCodeT5+ -0.019031458 -0.0055748072
## model_architectureFalcon-180B -0.042506759 -0.0293669322
## model_architectureGemini-Pro -0.010064668 0.0032858274
## model_architectureGPT-4o 0.001866744 0.0151188028
## model_architectureInstructGPT -0.011425153 0.0015432500
## model_architectureLLaMA-3 -0.023395889 -0.0100299951
## model_architectureMixtral-8x7B -0.041822968 -0.0286209643
## model_architecturePaLM-2 -0.026609741 -0.0132885204
## model_architectureTransformer-XL -0.049951641 -0.0369331682
## task_categoryCommunication 0.001575725 0.0151107929
## task_categoryCreative Writing -0.012880395 0.0007648994
## task_categoryData Analysis -0.022459453 -0.0090525155
## task_categoryDecision Making -0.004962544 0.0090177681
## task_categoryLearning & Adaptation 0.009898510 0.0243485327
## task_categoryPlanning & Scheduling -0.009188243 0.0044401250
## task_categoryProblem Solving 0.006392915 0.0203470728
## task_categoryResearch & Summarization -0.011814964 0.0018822762
## task_categoryText Processing -0.004854462 0.0086853631
Interpretació: al 2.5%, els intervals de confiança no es consideren considerablement significatius. Per una altra banda, l’amplada d’aquests ens dona informació sobre la precisió de l’estimació, i els que superen el 97.5% proporcionen una estimació del rang dels efectes reals dels coeficients.
Decisió sobre la hipòtesi nul·la: a partir dels resultats obtinguts es rebutja la hipòtesi nul·la (H0), ja que el model és estadísticament significatiu, i diverses variables explicatives presenten coeficients significatius. Per tant, existeix evidència estadística que el percentatge d’èxit d’una tasca feta per un agent d’intel·ligència artificial depèn de factors com la complexitat de la tasca, la qualitat de les dades, el nivell d’autonomia, l’arquitectura del model i la categoria de la tasca.
Resultats globals del model logístic:
library(broom)
resultats_log <- tidy(model_logistic)
resultats_log
## # A tibble: 13 × 5
## term estimate std.error statistic p.value
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) -6.98 1.04 -6.72 1.78e-11
## 2 task_complexity 2.54 0.131 19.4 9.39e-84
## 3 data_quality_score -1.82 1.09 -1.68 9.31e- 2
## 4 autonomy_level -0.00806 0.0515 -0.156 8.76e- 1
## 5 task_categoryCommunication -0.0888 0.244 -0.364 7.15e- 1
## 6 task_categoryCreative Writing 0.417 0.272 1.53 1.26e- 1
## 7 task_categoryData Analysis 0.594 0.376 1.58 1.14e- 1
## 8 task_categoryDecision Making 0.504 1.04 0.485 6.28e- 1
## 9 task_categoryLearning & Adaptation 9.63 675. 0.0143 9.89e- 1
## 10 task_categoryPlanning & Scheduling 0.387 0.256 1.51 1.31e- 1
## 11 task_categoryProblem Solving 12.0 620. 0.0194 9.85e- 1
## 12 task_categoryResearch & Summarization -0.277 0.316 -0.874 3.82e- 1
## 13 task_categoryText Processing 0.464 0.261 1.78 7.52e- 2
ggplot(dades_log, aes(prob_intervencio)) +
geom_histogram(bins = 30) +
labs(
title = "Distribució de probabilitats predites",
x = "Probabilitat d'intervenció humana"
)
#OR <- exp(coef(model_logistic))
#IC <- exp(confint(model_logistic))
#OR
#IC
Finalment, en aquest últim apartat farem unes breus conclusions envers els resultats dels models de l’estudi, explicarem algunes de les limitacions que ens han sorgit i esmentarem algunes idees per a possibles noves extensions del treball en un futur.
Interpretació dels resultats:
L’anàlisi estadística realitzada ens ha permès identificar diversos factors que influeixen en el rendiment de les tasques executades per agents d’IA, els quals s’han mesurat principalment a través de la variable resposta success_rate i de la necessitat d’intervenció humana.
Els resultats del model de regressió lineal múltiple ens indiquen que la complexitat de la tasca influeix de forma negativa sobre el percentatge d’èxit, ja que, a mesura que aquesta augmenta, el rendiment tendeix a disminuir. En canvi, variables com el nivell d’autonomia de l’agent i la qualitat de les dades hi influeixen de manera positiva, pel fet que hem observat que agents més autònoms i amb dades de millor qualitat aconsegueixen millors resultats.
Pel que fa a les variables categòriques, podem apreciar diferències segons la categoria de la tasca i l’arquitectura del model pel fet que no tots els agents responen igual davant tasques similars. Tot això ens corrobora que el rendiment dels agents depèn de la complexitat i del tipus de tasca que aquest ha de resoldre.
D’altra banda, el model de regressió logística que hem utilitzat per analitzar la variable human_intervention_required ens mostra que aquesta probabilitat augmenta molt a mesura que ho fa la complexitat de la tasca, mentre que aquesta disminueix quan l’agent és més autònom i tenim millor qualitat de dades. Aquest resultat és també s’ajusta amb les interpretacions del model lineal.
Conclusions principals:
A partir dels resultats obtinguts, podem afirmar que la complexitat de la tasca és un factor molt important, tant pel rendiment com per a la necessitat d’intervenció humana. A més, el nivell d’autonomia dels agents i la qualitat de les dades milloren l’èxit de les tasques i redueixen la dependència d’intervenció humana. Per una altra banda, es presenten diferències segons la categoria de la tasca i l’arquitectura del model, ja que hem pogut comprovar que realment no tenim un agent òptim per a totes les tasques.
La combinació del model de regressió lineal i el model logístic ens ha permès permet resoldre la pregunta d’estudi en tots els seus aspectes. Per aquesta raó, podem confirmar que el rendiment dels agents d’intel·ligència artificial es veu afectat per la complexitat de la tasca, les característiques de l’agent i la tasca en la qual s’aplica.
Limitacions de l’estudi:
Possibles línies futures de treball: