<jupyter_start><jupyter_text>Za pomocą języka R przeanalizować dowolne dane z poprzednich laboratoriów. W jednej tabeli języka R należy umieścić wyniki dwóch różnych eksperymentów (t.j. czas działania dwóch różnych funkcji) dla różnych parametrów (t.j. rozmiarów wektora(macierzy))Tabela powinna zawierać dane z 10-krotnego uruchomienia tego samego eksperymentu dla tych samych parametrów (dla każdego takiego zestawu)<jupyter_code>naive = read.csv("../lab3/matrices/naive.csv")
better = read.csv("../lab3/matrices/better.csv")
blas = read.csv("../lab3/matrices/blas.csv")

avg_naive = aggregate( result ~ size, data=naive, FUN=mean)
avg_better = aggregate( result ~ size, data=better, FUN=mean)
avg_blas = aggregate( result ~ size, data=blas, FUN=mean)

avg_naive$sd = aggregate(result ~ size, data=naive, FUN=sd)$result
avg_better$sd = aggregate(result ~ size, data=better, FUN=sd)$result
avg_blas$sd = aggregate(result ~ size, data=blas, FUN=sd)$result

avg_naive<jupyter_output><empty_output><jupyter_text>Należy przedstawić wykresy średnich czasów obliczenia wybranych funkcji w zależności od rozmiaru wektora (macierzy)Wykresy powinny zawierać informację o odchyleniu standardowym dla uzyskanych wyników. Słupki błędów można narysować korzystając z funkcji geom_errorbar pakietu ggplot2 .<jupyter_code>library("ggplot2")

ggplot() + 
geom_point(data=avg_naive, mapping=aes(x=size, y=result)) + 
geom_errorbar(data=avg_naive, mapping=aes(x=size, ymin=result-sd, ymax=result+sd), color="red") +

geom_point(data=avg_better, mapping=aes(x=size, y=result)) + 
geom_errorbar(data=avg_better, mapping=aes(x=size, ymin=result-sd, ymax=result+sd), color="green") +

geom_point(data=avg_blas, mapping=aes(x=size, y=result)) + 
geom_errorbar(data=avg_blas, mapping=aes(x=size, ymin=result-sd, ymax=result+sd), color="blue")<jupyter_output><empty_output><jupyter_text>Uzyc aproksymacji wielomianowej dostepnej w jezyku R do znalezienia odpowiednich wielomianow, ktore najlepiej pasuja do wynikow kazdego z algorytmow. Dodac wykresy uzyskanych wielomianow do wykresu.<jupyter_code>naive_fit = lm(result ~ poly(size, 3, raw=TRUE), data=avg_naive)
better_fit = lm(result ~ poly(size, 3, raw=TRUE), data=avg_better)
blas_fit = lm(result ~ poly(size, 3, raw=TRUE), data=avg_blas)
naive_line = data.frame(size=seq(0,500))
naive_line$result = predict(naive_fit, naive_line)

better_line = data.frame(size=seq(0,500))
better_line$result = predict(better_fit, better_line)

blas_line = data.frame(size=seq(0,500))
blas_line$result = predict(blas_fit, blas_line)

last_plot() + 
geom_line(data=naive_line, mapping=aes(size, result)) +
geom_line(data=better_line, mapping=aes(size, result)) +
geom_line(data=blas_line, mapping=aes(size, result))<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.12105835447625951, 'fraction_numerical': 0.007973903588256614, 'mean_word_length': 8.2, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '246662', 'license': 'MIT', 'n_tokens_mistral': 1155, 'n_tokens_neox': 1146, 'n_words': 213, 'path': 'lab4/lab4.ipynb', 'repo_name': 'mprzewie/MOwNiT_2', 'size': '2759'}