<jupyter_start><jupyter_text>Tag 3. Kapitel 12. R Tests Lektion 61. Lineare Regression  EinführungDie Lineare Regression ist eine der am häufigsten verwendeten Vorhersage-Techniken. Ziel der Linearen Regression ist es, eine mathematische Gleichung für eine kontinuierliche Antwortvariable Y als Funktion einer oder mehrerer X-Variablen zu finden. Damit können Sie dieses Regressionsmodell verwenden, um das Y vorherzusagen, wenn nur das X bekannt ist.Diese mathematische Gleichung kann wie folgt verallgemeinert werden:**Y = ß0 + ß1 * X**Dabei ist β0 der Y-Achse-Schnittwert bei X=0 und die β2 ist die Steigung, die vorgibt wie schnell/langsam die unsere Funktion auf- bzw. absteigt Nehmen wir z.B, cars-Datensätze und stellen beide darin enthaltene Werte grahisch dar:<jupyter_code>head(cars)
help(cars)
require(stats);
require(graphics)

plot(cars, xlab = "Speed (mph)", ylab = "Stopping distance (ft)", las = 1)
lines(lowess(cars$speed, cars$dist, f = 2/3, iter = 3), col = "red")
title(main = "cars data (mph x ft)")
help(plot)
plot(cars, xlab = "Speed (mph)", ylab = "Stopping distance (ft)",
     las = 1, log = "xy")

title(main = "cars data (logarithmic scales)")
lines(lowess(cars$speed, cars$dist, f = 2/3, iter = 3), col = "red")
# Verwenden des Streudiagramms zur Visualisierung der Beziehung
scatter.smooth(x=cars$speed, y=cars$dist, main="Dist ~ Speed")  # scatterplot
# Verwenden von BoxPlot, um nach Ausreißern zu suchen
par(mfrow=c(1, 2))  # divide graph area in 2 columns
boxplot(cars$speed, main="Speed", sub=paste("Outlier rows: ", boxplot.stats(cars$speed)$out))  # box plot for 'speed'
boxplot(cars$dist, main="Distance", sub=paste("Outlier rows: ", boxplot.stats(cars$dist)$out))  # box plot for 'distance'
# Building the Linear Regression Model
linearMod <- lm(dist ~ speed, data=cars)  # build linear regression model on full data
print(linearMod)
# Linear Regression Diagnostics
summary(linearMod)  # model summary
# Step 1: Create the training and test data
set.seed(100)  # setting seed to reproduce results of random sampling
trainingRowIndex <- sample(1:nrow(cars), 0.8*nrow(cars))  # row indices for training data (80%)
trainingRowIndex
0.8*nrow(cars)
nrow(cars)
trainingData <- cars[trainingRowIndex, ]  # model training data
trainingData

testData  <- cars[-trainingRowIndex, ]   # test data (rest zum Testen 20%)
testData
#Step 2: Fit the model on training data and predict dist on test data
# Build the model on training data
lmMod <- lm(dist ~ log(speed), data=trainingData)  # build the model
lmMod
distPred <- predict(lmMod, testData)  # predict distance
distPred
# Step 3. Review Modelsummary
summary (lmMod)  
# Step 4: Calculate prediction accuracy and error rates:
actuals_preds <- data.frame(cbind(actuals=testData$dist, predicteds=distPred))  # make actuals_predicteds dataframe.
actuals_preds
correlation_accuracy <- cor(actuals_preds)  # 82.7%
correlation_accuracy
correlation_accuracy <- cor(actuals_preds)  # 82.7%
actuals_preds[1:10,]<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10587454364420842, 'fraction_numerical': 0.015267175572519083, 'mean_word_length': 5.638766519823789, 'pattern_counts': {'":': 0, '<': 14, '<?xml version=': 0, '>': 5, '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': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '614057', 'license': 'MIT', 'n_tokens_mistral': 1067, 'n_tokens_neox': 999, 'n_words': 331, 'path': '3.12 R Regression-Tests/de-DE/3.12.61 R - LinearRegression.ipynb', 'repo_name': 'softfactories/r_train_2', 'size': '3013'}