Regresna analyza

<< Statistics`LinearRegression`

<< Statistics`MultidescriptiveStatistics`

<< Statistics`ContinuousDistributions`

Merala sa rýchlosť zvuku yi pri rôznych teplotách vzduchu xi, výsledky sú zaznamenané v tabuľke.

teplota   ( 0C )	             -20	    0	20	50	100
rýchlosť   ( m/s )	323	327	340	364	386

Vypočítajte korelačný koeficient, preložte regresnú priamku.

data = {{-20, 323}, {0, 327}, {20, 340}, {50, 364}, {100, 
          386}}

n = Length[data]

g1 = 
      ListPlot[data, Prolog -> AbsolutePointSize[5], 
        PlotStyle -> {Hue[0.03]}]

teplota = Table[data[[j, 1]], {j, 1, n}]

rychlost = Table[data[[j, 2]], {j, 1, n}]

r = Correlation[teplota, rychlost] // N

SpearmanRankCorrelation[teplota, rychlost]

Okrem vypoctu korelacneho koeficienta, budeme testovat jeho nulovost na hladine vyznamnosti α=0.05, pomozeme si podmienku, vystup je TRUE (ak zamietam H0), t.j. korelacny koeficient nie je nulovy. V opacnom pripade je vystup FALSE,

α = 0.05

If[((Abs[r] (Sqrt[n - 2]))/(1 - (r^2))) > 
        Quantile[StudentTDistribution[n - 2], 1 - (α/2)], 
      Print["zamietam H0, korelacny koeficient nie je nulovy"], 
      Print["nezamietam H0"]]

Regress[data, {x}, x]

Regress[data, {1, x}, x, 
      RegressionReport -> SummaryReport]

Ak nas zaujima iba fitovana funkcia staci pouzit prikaz

func = Fit[data, {1, x}, x]

f1 = 
      Regress[data, {x}, x, RegressionReport -> {BestFit}]

g2 = Plot[BestFit /. f1, {x, -20, 100}]

Show[g1, g2]

Aka bude rychlost zvuku pri 50 stupnoch Celsia ?

BestFit /. f1 /. x -> 50

coef = 
      Regress[data, {x}, x, 
        RegressionReport -> {BestFitCoefficients}]

coef = 
      Regress[data, {x}, x, 
        RegressionReport -> {BestFitParameters}]

chyby = 
      Regress[data, {x}, x, 
        RegressionReport -> {FitResiduals}]

Regress[data, {1, x}, x, 
      RegressionReport -> {FitResiduals, 
          SinglePredictionCITable}]

V desiatich rôznych vzdialenostiach xi sa merala veľkosť priehybu zaťaženia dosky yi . Výsledky sú uvedené v tabuľke.

xi  (dm)	1	     2	             3	      4	       5	             6	            7 	           8	          9	    10
yi  (mm)	2,1299	    2,1532	2,1611	     2,151    2,1282	 2,0807	2,0266  	1 ,9594         1,8759	   1,7723

Preložte regresnú krivku druhého stupňa (kvadratická regresia

data2 = {2.1299,  2.1532,  2.1611,  2.151,  2.1282,  2.0807,  
        2.0266,  1.9594,  1.8759,  1.7723}

g1 = 
      ListPlot[data2, Prolog -> AbsolutePointSize[5], 
        PlotStyle -> {Hue[0.03]}]

Regress[data2, {x, (x^2)}, x]

f2 = 
      Regress[data2, {x, (x^2)}, x, RegressionReport -> {BestFit}]

g2 = Plot[BestFit /. f2, {x, 0, 10}]

Show[g1, g2]

Poznamka: Ak su data merane chronologicky od 1,2...n  s konstantnym krokom 1 nemusim ich zadat ako dvojice dat. Ak nechcem v regresnej funkcii uvazovat konstantu pridam prikaz  IncludeConstant->False

Regress[data2, {x, x^2}, x, IncludeConstant -> False]

Ine priklady, transformacia na linearnu regresiu

Transformacia niekedy nie je potrebna, staci zadat rovno bazove funkcie

Barometrický tlak p (meraný v Pa) závisí exponenciálne od nadmorskej výšky h (meranej v m) t.j.
 namerali sme 6 hodnôt barometrického tlaku v rôznych nadmorských výškach. Výsledky sú uvedené v tabuľke:
    
H	  0	            270	      840	1452	    2116	3203
P	100000	96974	     90263	83553	   76842	66842

Vhodnou transformáciou linearizujte, metódou najmenších štvorcov odhadnite parametre a, b.

data3 = {{0, 100000}, {270, 96974}, {840, 90263}, {1452, 83553}, {2116, 
          76842}, {3203, 66842}}

g1 = 
      ListPlot[data3, Prolog -> AbsolutePointSize[5], 
        PlotStyle -> {Hue[0.03]}]

upravene = 
      Table[{data3[[i, 1]], Log[data3[[i, 2]]] // N}, {i, 1, 
          6}]

Regress[upravene, {x}, x]

koeficienty = 
      Regress[upravene, {x}, x, 
        RegressionReport -> {BestFitCoefficients}]

parametre = BestFitParameters /. koeficienty

b = parametre[[2]]

a = Exp[parametre[[1]]]

g2 = Plot[a*Exp[b*t], {t, 1, 3250}]

Show[g1, g2]

Priklad chybneho zadania

f3 = Regress[data3, {(E^x)}, x]

Regress[data3, {(E^x)}, x, 
      RegressionReport -> {BestFit}]