1. 平均值、中位數(shù)和模式
- Mean平均值
I. 語法
用于計算R中的平均值的基本語法是 -
mean(x, trim = 0, na.rm = FALSE, ...)
以下是所使用的參數(shù)的描述 -
-- x是輸入向量崇众。
-- trim用于從排序向量的兩端丟棄一些觀察結(jié)果。
-- na.rm用于從輸入向量中刪除缺失值茬暇。
示例:
# 創(chuàng)建向量
x <- c(12, 7, 3, 4.2, 18, 2, 54, -21, 8, -5)
# 執(zhí)行
result.mean <- mean(x)
print(result.mean)
打印結(jié)果:
II. 修剪選項
# 創(chuàng)建向量
x <- c(12, 7, 3, 4.2, 18, 2, 54, -21, 8, -5)
# 執(zhí)行
result.mean <- mean(x)
print(result.mean)
# 修剪選項
result.mean <- mean(x, trim = 0.3)
print(result.mean)
打印結(jié)果:
III. NA選項
# NA選項--如果有缺失值,則平均函數(shù)返回NA
x <- c(12, 7, 3, 4.2, 18, 2, 54, -21, 8, -5, NA)
result.mean <- mean(x)
print(result.mean)
result.mean <- mean(x, na.rm = TRUE)
print(result.mean)
打印結(jié)果:
- Median中位數(shù)
I. 語法
計算R語言中位數(shù)的基本語法是 -
median(x, na.rm = FALSE)
以下是所使用的參數(shù)的描述 -
-- x是輸入向量赋朦。
-- na.rm用于從輸入向量中刪除缺失值辉川。
II. 示例
# 創(chuàng)建向量
x <- c(12, 7, 3, 4.2, 18, 2, 54, -21, 8, -5)
# 查找中位數(shù)
median.result <- median(x)
print(median.result)
打印結(jié)果:
- Mode模式
I. 模式是一組數(shù)據(jù)中出現(xiàn)次數(shù)最多的值诅愚。
II. 示例
# 創(chuàng)建函數(shù)
getmode <- function(v) {
uniqv <- unique(v)
uniqv[which.max(tabulate(match(v, uniqv)))]
}
# 創(chuàng)建向量
v <- c(2, 1, 2, 3, 1, 2, 3, 4, 1, 5, 5, 3, 2, 3)
# 計算模式
result <- getmode(v)
print(result)
# 創(chuàng)建字符向量
charv <- c("o", "it", "the", "it", "it")
# 獲取模式
result <- getmode(charv)
print(result)
打印結(jié)果:
2. 線性回歸
- 方程
線性回歸的一般數(shù)學(xué)方程為 -
y = ax + b
以下是所使用的參數(shù)的描述 -
-- y是響應(yīng)變量寒锚。
-- x是預(yù)測變量。
-- a和b被稱為系數(shù)常數(shù)。
- 建立回歸步驟
1. 進(jìn)行收集高度和相應(yīng)重量的觀測值的樣本的實(shí)驗(yàn)刹前。
2. 使用R語言中的lm()函數(shù)創(chuàng)建關(guān)系模型泳赋。
3. 從創(chuàng)建的模型中找到系數(shù),并使用這些創(chuàng)建數(shù)學(xué)方程
4. 獲得關(guān)系模型的摘要以了解預(yù)測中的平均誤差喇喉。 也稱為殘差祖今。
5. 為了預(yù)測新人的體重,使用R中的predict()函數(shù)拣技。
- LM()函數(shù)
此函數(shù)創(chuàng)建預(yù)測變量和響應(yīng)變量之間的關(guān)系模型衅鹿。
語法
線性回歸中lm()函數(shù)的基本語法是 -
lm(formula,data)
以下是所使用的參數(shù)的說明 -
-- 公式是表示x和y之間的關(guān)系的符號。
-- 數(shù)據(jù)是應(yīng)用公式的向量过咬。
- 創(chuàng)建關(guān)系模型并獲取系數(shù)
# 創(chuàng)建關(guān)系模型并獲取系數(shù)
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# 應(yīng)用lm()函數(shù)
relation <- lm(y~x)
print(relation)
打印結(jié)果:
其中a=0.6746, b=-38.4551
- 獲取相關(guān)的摘要
# 獲取相關(guān)摘要
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# 應(yīng)用lm()函數(shù)
relation <- lm(y~x)
print(summary(relation))
打印結(jié)果:
predict()函數(shù)
語法
線性回歸中的predict()的基本語法是 -
predict(object, newdata)
以下是所使用的參數(shù)的描述 -
-- object是已使用lm()函數(shù)創(chuàng)建的公式。
-- newdata是包含預(yù)測變量的新值的向量制妄。預(yù)測新人的體重
# 預(yù)測新人體重
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# 應(yīng)用lm()函數(shù)
relation <- lm(y~x)
# 身高170掸绞,預(yù)測體重
a <- data.frame(x = 170)
result <- predict(relation, a)
print(result)
打印結(jié)果:
- 以圖形方式可視化回歸
# 圖形方式可視化回歸
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# 應(yīng)用lm()函數(shù)
relation <- lm(y~x)
# 設(shè)置文件名
png(file = "linearregression.png")
# 繪制圖表
# 繪制點(diǎn)
plot(y, x, col = "blue", main = "Height & Weight Regression")
# 繪制線
abline(lm(x~y), cex = 1.3, pch = 16, xlab = "Weight in Kg", ylab = "Height in cm")
# 保存文件
dev.off()
效果:
3. 多重回歸
- 方程
多元回歸的一般數(shù)學(xué)方程為 -
y = a + b1x1 + b2x2 +...bnxn
以下是所使用的參數(shù)的描述 -
-- y是響應(yīng)變量。
-- a耕捞,b1衔掸,b2 ... bn是系數(shù)。
-- x1俺抽,x2敞映,... xn是預(yù)測變量。
- lm()函數(shù)
此函數(shù)創(chuàng)建預(yù)測變量和響應(yīng)變量之間的關(guān)系模型磷斧。
語法
lm()函數(shù)在多元回歸中的基本語法是 -
lm(y ~ x1+x2+x3...,data)
以下是所使用的參數(shù)的描述 -
-- 公式是表示響應(yīng)變量和預(yù)測變量之間的關(guān)系的符號振愿。
-- 數(shù)據(jù)是應(yīng)用公式的向量。
- 創(chuàng)建關(guān)系模型并獲取系數(shù)
# 創(chuàng)建模型并獲取系數(shù)
input <- mtcars[,c("mpg", "disp", "hp", "wt")]
# 創(chuàng)建關(guān)系模型
model <- lm(mpg~disp+hp+wt, data = input)
# 顯示模型
print(model)
# 打印系數(shù)
cat("# # # # The Coefficient Values # # # ","
")
# 打印系數(shù)
a <- coef(model)[1]
print(a)
Xdisp <- coef(model)[2]
Xhp <- coef(model)[3]
Xwt <- coef(model)[4]
print(Xdisp)
print(Xhp)
print(Xwt)
打印結(jié)果:
4. 邏輯回歸
- 邏輯回歸
y = 1/(1+e^-(a+b1x1+b2x2+b3x3+...))
以下是所使用的參數(shù)的描述 -
-- y是響應(yīng)變量弛饭。
-- x是預(yù)測變量冕末。
-- a和b是作為數(shù)字常數(shù)的系數(shù)。
用于創(chuàng)建回歸模型的函數(shù)是glm()函數(shù)侣颂。
- 語法
邏輯回歸中g(shù)lm()函數(shù)的基本語法是 -
glm(formula,data,family)
以下是所使用的參數(shù)的描述 -
-- formula是表示變量之間的關(guān)系的符號档桃。
-- data是給出這些變量的值的數(shù)據(jù)集。
-- family是R語言對象來指定模型的細(xì)節(jié)憔晒。 它的值是二項邏輯回歸藻肄。
- 創(chuàng)建回歸模型
# 創(chuàng)建回歸模型
input <- mtcars[,c("am", "cyl", "hp", "wt")]
am.data = glm(formula = am ~ cyl + hp + wt, data = input, family = binomial)
print(summary(am.data))
打印結(jié)果:
5. 標(biāo)準(zhǔn)分布
- 函數(shù)
dnorm(x, mean, sd)
pnorm(x, mean, sd)
qnorm(p, mean, sd)
rnorm(n, mean, sd)
以下是在上述功能中使用的參數(shù)的描述 -
-- x是數(shù)字的向量。
-- p是概率的向量拒担。
-- n是觀察的數(shù)量(樣本大朽谕汀)。
-- mean是樣本數(shù)據(jù)的平均值澎蛛。 它的默認(rèn)值為零抚垄。
-- sd是標(biāo)準(zhǔn)偏差。 它的默認(rèn)值為1。
- dnorm()
# dnorm() - 該函數(shù)給出給定平均值和標(biāo)準(zhǔn)偏差在每個點(diǎn)的概率分布的高度呆馁。
x <- seq(-10, 10, .1)
y <- dnorm(x, mean = 2.5, sd = 0.5)
# 設(shè)置文件名
png(file = "dnorm.png")
# 繪制點(diǎn)
plot(x,y)
dev.off()
效果:
- pnorm()
# pnorm() - 該函數(shù)給出正態(tài)分布隨機(jī)數(shù)的概率小于給定數(shù)的值桐经。 它也被稱為“累積分布函數(shù)”。
x <- seq(-10, 10, .2)
y <- pnorm(x, mean = 2.5, sd = 2)
# 設(shè)置文件名
png(file = "pnorm.png")
# 繪制點(diǎn)
plot(x, y)
dev.off()
效果:
- qnorm
# qnorm() - 該函數(shù)采用概率值浙滤,并給出累積值與概率值匹配的數(shù)字阴挣。
x <- seq(0, 1, by = 0.02)
y <- qnorm(x, mean = 2, sd = 1)
# 設(shè)置文件名
png(file = "qnorm.png")
plot(x, y)
dev.off()
效果:
- rnorm()
# rnorm() - 此函數(shù)用于生成分布正常的隨機(jī)數(shù)。 它將樣本大小作為輸入纺腊,并生成許多隨機(jī)數(shù)畔咧。 我們繪制一個直方圖來顯示生成的數(shù)字的分布。
y = rnorm(50)
png(file = "rnorm.png")
hist(y, main = "Normal Distribution")
dev.off()
效果:
6. 二項分布
- 函數(shù)
dbinom(x, size, prob)
pbinom(x, size, prob)
qbinom(p, size, prob)
rbinom(n, size, prob)
以下是所使用的參數(shù)的描述 -
-- x是數(shù)字的向量揖膜。
-- p是概率向量誓沸。
-- n是觀察的數(shù)量。
-- size是試驗(yàn)的數(shù)量壹粟。
-- prob是每個試驗(yàn)成功的概率拜隧。
- dbinom()
x = seq(0, 50, 1)
y = dbinom(x, 50, 0.5)
png(file = "dbinom.png")
plot(x, y)
dev.off()
效果:
- pbinom()
# pbinom() - 此函數(shù)給出事件的累積概率。 它是表示概率的單個值趁仙。
x <- pbinom(26, 51, 0.5)
print(x)
打印結(jié)果:
- qbinom()
# qbinom() - 該函數(shù)采用概率值洪添,并給出累積值與概率值匹配的數(shù)字。
x <- qbinom(0.25, 51, 1/2)
print(x)
打印結(jié)果:
- rbinom()
# rbinom() - 該函數(shù)從給定樣本產(chǎn)生給定概率的所需數(shù)量的隨機(jī)值雀费。
x <- rbinom(8, 150, .4)
print(x)
打印結(jié)果:
7. 泊松分布
- 數(shù)學(xué)方程
log(y) = a + b1x1 + b2x2 + bnxn.....
以下是所使用的參數(shù)的描述 -
- y是響應(yīng)變量干奢。
- a和b是數(shù)字系數(shù)。
- x是預(yù)測變量盏袄。
用于創(chuàng)建泊松回歸模型的函數(shù)是glm()函數(shù)忿峻。 - glm()語法
glm(formula,data,family)
以下是在上述功能中使用的參數(shù)的描述 -
-- formula是表示變量之間的關(guān)系的符號。
-- data是給出這些變量的值的數(shù)據(jù)集辕羽。
-- family是R語言對象來指定模型的細(xì)節(jié)炭菌。 它的值是“泊松”的邏輯回歸。
- 創(chuàng)建回歸
# 創(chuàng)建回歸模型
# 內(nèi)置的數(shù)據(jù)集“warpbreaks”
output <- glm(formula = breaks ~ wool + tension,
data = warpbreaks,
family = poisson
)
print(summary(output))
打印結(jié)果:
8. 協(xié)方差分析
- 模型與分類變量和預(yù)測變量之間的相互作用
# 模型與分類變量和預(yù)測變量之間的相互作用
result <- aov(mpg~hp*am, data = mtcars)
print(summary(result))
打印結(jié)果:
- 沒有分類變量和預(yù)測變量之間相互作用的模型
# 沒有分類變量和預(yù)測變量之間相互作用的模型
result <- aov(mpg~hp+am, data = mtcars)
print(summary(result))
打印結(jié)果:
- 比較兩個模型
# 比較兩個模型
input <- mtcars
result1 <- aov(mpg~hp*am, data = input)
result2 <- aov(mpg~hp+am, data = input)
# 比較兩個模型
print(anova(result1, result2))
打印結(jié)果:
9. 時間序列分析
- 語法
timeseries.object.name <- ts(data, start, end, frequency)
以下是所使用的參數(shù)的描述 -
-- data是包含在時間序列中使用的值的向量或矩陣逛漫。
-- start以時間序列指定第一次觀察的開始時間黑低。
-- end指定時間序列中最后一次觀測的結(jié)束時間。
-- frequency指定每單位時間的觀測數(shù)酌毡。
除了參數(shù)“data”克握,所有其他參數(shù)是可選的。
- 單時間序列
# 單時間序列
rainfall <- c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071)
# 轉(zhuǎn)換為時間序列對象
rainfall.timeseries <- ts(rainfall, start = c(2012, 1), frequency = 12)
print(rainfall.timeseries)
# 設(shè)置圖片
png(file = "rainfall.png")
# 繪圖
plot(rainfall.timeseries)
# 保存圖片
dev.off()
打印結(jié)果:
效果:
- 不同的時間間隔
ts()函數(shù)中的頻率參數(shù)值決定了測量數(shù)據(jù)點(diǎn)的時間間隔枷踏。 值為12表示時間序列為12個月菩暗。 其他值及其含義如下 -
-- 頻率= 12指定一年中每個月的數(shù)據(jù)點(diǎn)。
-- 頻率= 4每年的每個季度的數(shù)據(jù)點(diǎn)旭蠕。
-- 頻率= 6每小時的10分鐘的數(shù)據(jù)點(diǎn)停团。
-- 頻率= 24 * 6將一天的每10分鐘的數(shù)據(jù)點(diǎn)固定旷坦。 - 多時間序列
# 多時間序列
rainfall1 <- c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071)
rainfall2 <- c(655,1306.9,1323.4,1172.2,562.2,824,822.4,1265.5,799.6,1105.6,1106.7,1337.8)
# 轉(zhuǎn)換為矩陣
combined.rainfall <- matrix(c(rainfall1, rainfall2), nrow = 12)
# 轉(zhuǎn)換為時間序列
rainfall.timeseries <- ts(combined.rainfall, start = c(2012, 1), frequency = 12)
print(rainfall.timeseries)
# 設(shè)置文件名
png(file = "rainfall_combined.png")
# 繪制點(diǎn)
plot(rainfall.timeseries, main = "Multiple Time Series")
# 保存文件
dev.off()
打印結(jié)果:
效果:
10. 非線性最小二乘
- 語法
nls(formula, data, start)
以下是所使用的參數(shù)的描述 -
-- formula是包括變量和參數(shù)的非線性模型公式。
-- data是用于計算公式中變量的數(shù)據(jù)框佑稠。
-- start是起始估計的命名列表或命名數(shù)字向量秒梅。
- 示例
# 非線性最小二乘法
xvalues <- c(1.6,2.1,2,2.23,3.71,3.25,3.4,3.86,1.19,2.21)
yvalues <- c(5.19,7.43,6.94,8.11,18.75,14.88,16.06,19.12,3.21,7.58)
# 設(shè)置圖片
png(file = "nls.png")
# 繪圖
plot(xvalues, yvalues)
# 取假設(shè)值并適合模型。
model <- nls(yvalues ~ b1 * xvalues^2 + b2, start = list(b1 = 1, b2 = 3))
# 繪制圖表
new.data <- data.frame(xvalues = seq(min(xvalues), max(xvalues), len = 100))
lines(new.data$xvalues, predict(model, newdata = new.data))
# 保存文件
dev.off()
# 獲取model平法和
print(sum(resid(model)^2))
# 獲得所選系數(shù)值的置信區(qū)間舌胶。
print(confint(model))
打印結(jié)果:
效果圖:
11. 決策樹
- 安裝包
# 安裝包 -- party包中用于創(chuàng)建和分析決策樹的函數(shù)ctree()
install.packages("party", repos="https://cran.cnr.berkeley.edu/")
- 語法
ctree(formula, data)
以下是所使用的參數(shù)的描述 -
-- formula是描述預(yù)測變量和響應(yīng)變量的公式捆蜀。
-- data是所使用的數(shù)據(jù)集的名稱。
- 創(chuàng)建決策樹
# 創(chuàng)建決策樹
library(party)
# 創(chuàng)建輸入數(shù)據(jù)幀
input.data <- readingSkills[c(1:105),]
# 設(shè)置文件名
png(file = "decision_tree.png")
# 創(chuàng)建樹
output.tree <- ctree(
nativeSpeaker ~ age + shoeSize + score,
data = input.data
)
# 繪圖
plot(output.tree)
# 保存文件
dev.off()
打印結(jié)果:
效果:
12. 隨機(jī)森林算法
- 安裝包
# 安裝包 -- randomForest具有函數(shù)randomForest()幔嫂,用于創(chuàng)建和分析隨機(jī)森林辆它。
install.packages("randomForest", repos="https://cran.cnr.berkeley.edu/")
- 語法
randomForest(formula, data)
以下是所使用的參數(shù)的描述 -
formula是描述預(yù)測變量和響應(yīng)變量的公式。
data是所使用的數(shù)據(jù)集的名稱履恩。
- 創(chuàng)建森林
library(party)
library(randomForest)
# 創(chuàng)建森林
output.forest <- randomForest(nativeSpeaker ~ age + shoeSize + score, data = readingSkills)
print(output.forest)
print(importance(output.forest, type = 2))
打印結(jié)果:
13. 生存分析
- 語法
Surv(time,event)
survfit(formula)
以下是所使用的參數(shù)的描述 -
-- time是直到事件發(fā)生的跟蹤時間锰茉。
-- event指示預(yù)期事件的發(fā)生的狀態(tài)。
-- formula是預(yù)測變量之間的關(guān)系切心。
- 應(yīng)用生存分析
# 應(yīng)用函數(shù)
library("survival")
# 創(chuàng)建生存對象
survfit(Surv(pbc$time, pbc$status == 2) ~ 1)
# 設(shè)置文件名
png(file = "survival.png")
# 繪制圖
plot(survfit(Surv(pbc$time, pbc$status == 2) ~ 1))
# 保存
dev.off()
打印結(jié)果:
效果圖:
14. 卡方檢驗(yàn)
- 語法
chisq.test(data)
以下是所使用的參數(shù)的描述 -
-- data是以包含觀察中變量的計數(shù)值的表的形式的數(shù)據(jù)洞辣。
- 卡方校驗(yàn)
# 卡方檢驗(yàn)
library("MASS")
# 創(chuàng)建數(shù)據(jù)幀
car.data <- data.frame(Cars93$AirBags, Cars93$Type)
# 創(chuàng)建表
car.data = table(Cars93$AirBags, Cars93$Type)
print(car.data)
# 卡方校驗(yàn)
print(chisq.test(car.data))
打印結(jié)果: