C2MV commited on
Commit
e2ca05f
verified
1 Parent(s): c799bb2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +37 -45
app.py CHANGED
@@ -367,33 +367,36 @@ class RSM_BoxBehnken:
367
  'Valor p': [],
368
  '% Contribuci贸n': []
369
  })
370
-
371
  # Calcular estad铆sticos F y porcentaje de contribuci贸n para cada factor
372
  ms_error = anova_table.loc['Residual', 'sum_sq'] / anova_table.loc['Residual', 'df']
373
-
374
- # Agregar Block (si est谩 disponible en los datos)
375
- block_ss = self.data.groupby('Block')['AIA_ppm'].sum().var() if 'Block' in self.data.columns else 0
376
- if block_ss > 0:
377
- block_df = len(self.data['Block'].unique()) - 1 if 'Block' in self.data.columns else 1
378
- block_ms = block_ss / block_df
379
- block_f = block_ms / ms_error
380
- block_p = f.sf(block_f, block_df, anova_table.loc['Residual', 'df'])
381
- contribution_table = pd.concat([contribution_table, pd.DataFrame({
382
- 'Fuente de Variaci贸n': ['Block'],
383
- 'Suma de Cuadrados': [block_ss],
384
- 'Grados de Libertad': [block_df],
385
- 'Cuadrado Medio': [block_ms],
386
- 'F': [block_f],
387
- 'Valor p': [block_p],
388
- '% Contribuci贸n': [(block_ss / ss_total) * 100]
389
- })], ignore_index=True)
390
-
391
- # Agregar Model (suma de todos los t茅rminos del modelo excepto el residual)
392
- model_ss = anova_table['sum_sq'][:-1].sum() # Excluir residual
 
393
  model_df = anova_table['df'][:-1].sum()
394
  model_ms = model_ss / model_df
395
  model_f = model_ms / ms_error
396
  model_p = f.sf(model_f, model_df, anova_table.loc['Residual', 'df'])
 
 
397
  contribution_table = pd.concat([contribution_table, pd.DataFrame({
398
  'Fuente de Variaci贸n': ['Model'],
399
  'Suma de Cuadrados': [model_ss],
@@ -401,19 +404,19 @@ class RSM_BoxBehnken:
401
  'Cuadrado Medio': [model_ms],
402
  'F': [model_f],
403
  'Valor p': [model_p],
404
- '% Contribuci贸n': [(model_ss / ss_total) * 100]
405
  })], ignore_index=True)
406
 
407
- # Agregar factores individuales y sus interacciones
408
  for index, row in anova_table.iterrows():
409
  if index != 'Residual':
410
  factor_name = index
411
  if factor_name == f'I({self.x1_name} ** 2)':
412
- factor_name = f'{self.x1_name}'
413
  elif factor_name == f'I({self.x2_name} ** 2)':
414
- factor_name = f'{self.x2_name}'
415
  elif factor_name == f'I({self.x3_name} ** 2)':
416
- factor_name = f'{self.x3_name}'
417
 
418
  ss_factor = row['sum_sq']
419
  df_factor = row['df']
@@ -432,28 +435,17 @@ class RSM_BoxBehnken:
432
  '% Contribuci贸n': [contribution_percentage]
433
  })], ignore_index=True)
434
 
435
- # Agregar Residual
436
- residual_ss = anova_table.loc['Residual', 'sum_sq']
437
- residual_df = anova_table.loc['Residual', 'df']
438
- residual_ms = residual_ss / residual_df
439
- contribution_table = pd.concat([contribution_table, pd.DataFrame({
440
- 'Fuente de Variaci贸n': ['Residual'],
441
- 'Suma de Cuadrados': [residual_ss],
442
- 'Grados de Libertad': [residual_df],
443
- 'Cuadrado Medio': [residual_ms],
444
- 'F': [None],
445
- 'Valor p': [None],
446
- '% Contribuci贸n': [(residual_ss / ss_total) * 100]
447
- })], ignore_index=True)
448
 
449
- # Agregar Correlation Total
450
  contribution_table = pd.concat([contribution_table, pd.DataFrame({
451
  'Fuente de Variaci贸n': ['Cor Total'],
452
- 'Suma de Cuadrados': [ss_total],
453
- 'Grados de Libertad': [len(self.data) - 1],
454
- 'Cuadrado Medio': [None],
455
- 'F': [None],
456
- 'Valor p': [None],
457
  '% Contribuci贸n': [100]
458
  })], ignore_index=True)
459
 
 
367
  'Valor p': [],
368
  '% Contribuci贸n': []
369
  })
370
+
371
  # Calcular estad铆sticos F y porcentaje de contribuci贸n para cada factor
372
  ms_error = anova_table.loc['Residual', 'sum_sq'] / anova_table.loc['Residual', 'df']
373
+
374
+ # Agregar fila para el bloque
375
+ block_ss = self.data.groupby('Exp.')[self.y_name].sum().var() * len(self.data)
376
+ block_df = 1
377
+ block_ms = block_ss / block_df
378
+ block_f = block_ms / ms_error
379
+ block_p = f.sf(block_f, block_df, anova_table.loc['Residual', 'df'])
380
+ block_contribution = (block_ss / ss_total) * 100
381
+
382
+ contribution_table = pd.concat([contribution_table, pd.DataFrame({
383
+ 'Fuente de Variaci贸n': ['Block'],
384
+ 'Suma de Cuadrados': [block_ss],
385
+ 'Grados de Libertad': [block_df],
386
+ 'Cuadrado Medio': [block_ms],
387
+ 'F': [block_f],
388
+ 'Valor p': [block_p],
389
+ '% Contribuci贸n': [block_contribution]
390
+ })], ignore_index=True)
391
+
392
+ # Agregar fila para el modelo
393
+ model_ss = anova_table['sum_sq'][:-1].sum() # Suma todo excepto residual
394
  model_df = anova_table['df'][:-1].sum()
395
  model_ms = model_ss / model_df
396
  model_f = model_ms / ms_error
397
  model_p = f.sf(model_f, model_df, anova_table.loc['Residual', 'df'])
398
+ model_contribution = (model_ss / ss_total) * 100
399
+
400
  contribution_table = pd.concat([contribution_table, pd.DataFrame({
401
  'Fuente de Variaci贸n': ['Model'],
402
  'Suma de Cuadrados': [model_ss],
 
404
  'Cuadrado Medio': [model_ms],
405
  'F': [model_f],
406
  'Valor p': [model_p],
407
+ '% Contribuci贸n': [model_contribution]
408
  })], ignore_index=True)
409
 
410
+ # Agregar filas para cada t茅rmino del modelo
411
  for index, row in anova_table.iterrows():
412
  if index != 'Residual':
413
  factor_name = index
414
  if factor_name == f'I({self.x1_name} ** 2)':
415
+ factor_name = f'{self.x1_name}^2'
416
  elif factor_name == f'I({self.x2_name} ** 2)':
417
+ factor_name = f'{self.x2_name}^2'
418
  elif factor_name == f'I({self.x3_name} ** 2)':
419
+ factor_name = f'{self.x3_name}^2'
420
 
421
  ss_factor = row['sum_sq']
422
  df_factor = row['df']
 
435
  '% Contribuci贸n': [contribution_percentage]
436
  })], ignore_index=True)
437
 
438
+ # Agregar fila para Cor Total
439
+ cor_total_ss = ss_total
440
+ cor_total_df = len(self.data) - 1
 
 
 
 
 
 
 
 
 
 
441
 
 
442
  contribution_table = pd.concat([contribution_table, pd.DataFrame({
443
  'Fuente de Variaci贸n': ['Cor Total'],
444
+ 'Suma de Cuadrados': [cor_total_ss],
445
+ 'Grados de Libertad': [cor_total_df],
446
+ 'Cuadrado Medio': [np.nan],
447
+ 'F': [np.nan],
448
+ 'Valor p': [np.nan],
449
  '% Contribuci贸n': [100]
450
  })], ignore_index=True)
451