R實戰學習筆記1

ctrl shift c 加注釋


1.模擬試驗

2.利用ggplot2繪制圖形

3.簡單的數據分析

>檢驗均勻分布——ks.test()

>正態性檢驗——shapiro.test(data)

R實戰:重塑數據reshape

方差分析

ggplot2高級繪圖

paste用法

數據管理

ifelse(cond, statement1, statement2)


1.繪圖基礎繪圖 +回歸線+陰影 散點圖,直方圖,箱線圖


#回歸線陰影

ggplot(data=mtcars, aes(x=wt, y=mpg)) +

? geom_point(pch=17, color='blue', size=2) +

? geom_smooth(method='lm', color='red', linetype=2) +

? labs(title="Automobile Data", x="Weight", y="Miles Per Gallon")

#散點圖

#直方圖

#箱線圖(學姐版本

mtcars$cyl <- factor(mtcars$cyl)

ggplot(mtcars, aes(x=cyl, y=mpg)) +

? geom_boxplot( color="black",

? ? ? ? ? ? ? notch=TRUE,

? ? ? ? ? ? ? fill = c('red','blue','green'))+

? labs(x ="Number of Cylinders" ,y="Miles Per Gallon")+

? geom_point(position="jitter", color="blue", alpha=.5)

#拼圖(學姐版

install.packages("gridExtra")

? library(gridExtra)

? p1 <- ggplot(data =mtcars ) + geom_point(aes(x=wt,y=mpg))

? p2 <- ggplot(data =mtcars ) + geom_bar(aes(x= am,fill = cyl),position = 'fill')

? grid.arrange(p1,p2, ncol=2)


2.數據整理 整合,分類匯總,轉置,重塑


apply(mydata, 1, mean)? #行均值

apply(mydata, 2,mean)? #列均值


aggdata <-aggregate(mtcars, by=list(G_cyl=mtcars$cyl,G_gear=mtcars$gear),

??????????????????? FUN=mean, na.rm=TRUE)

#拼接


#分類匯總

ddply

#加一列

mutate

#轉置


#重塑reshape2


roster <- roster[order(roster$Student),]

# 1

Z_new <- scale(roster[,c("Math", "Science", "English")],center = T,scale = T)

roster$score <- apply(Z_new,1,mean)

Y_Cut <- quantile(roster$score,c(0,0.25,0.50,0.75,1))

roster$Rank <- cut(roster$score,breaks = Y_Cut ,include.lowest=T,labels = c('D','C','B','A'))



set.seed(123465)

my_data <- data.frame(matrix(sample.int(100,1000,replace = T),100,10))

names(my_data) <- paste0('璇勫',1:10)

my_data$ID <- 1:100

Score <- function(x){

? max_ <- which.max(x)[1]

? min_ <- which.min(x)[1]

? x <- x[-c(max_,min_)]

? return(mean(x,na.rm = T))

}

my_data$score <- apply(my_data[,paste0('打分',1:10)],2,Score)


3.數據添加列 定量數據轉變為定性數據


#數據

Student <- c("John Davis", "Angela Williams", "Bullwinkle Moose", "David Jones",

? ? ? ? ? ? "Janice Markhammer", "Cheryl Cushing", "Reuven Ytzrhak", "Greg Knox", "Joel England",

? ? ? ? ? ? "Mary Rayburn")

Math <- c(502, 600, 412, 358, 495, 512, 410, 625, 573, 522)

Science <- c(95, 99, 80, 82, 75, 85, 80, 95, 89, 86)

English <- c(25, 22, 18, 15, 20, 28, 15, 30, 37, 18)

roster <- data.frame(Student, Math, Science, English, stringsAsFactors = FALSE)

z <- scale(roster[ , 2:4])

> z

# mean()來計算各行的均值以獲得綜合得分

score <- apply(z, 1, mean)

# cbind()將均值列添加到花名冊中

roster <- cbind(roster, score)

library(stringr)

name <- str_split_fixed(roster$Student," ",n=2)

colnames(name) <- c("firstname","lastname")

a <- cbind(roster,name)

mutate(roster,score=apply(scale(roster[,2:4]),1,mean))


!!!!!!!


y <- quantile(roster$score,c(1,0.8, 0.6, 0.4, 0.2,0))

y

x <- cut(roster$score,breaks = c(Inf,0.9076691,0.3161559,-0.3604672,-0.8771239,-Inf),labels=c("A","B","C","D","E"))

roster <- cbind(roster, x)


b <- ddply(test,c("sex","smoke"),summarise,means=mean(bmi,na.rm=T))


4.數據分析 簡單分析 t檢驗,卡方檢驗,秩和檢驗

ttest

table useNA="ifany"

mytable <- xtabs(~Treatment+Improved, data=Arthritis)

chisq.test(mytable)

res_5 <- aov(Y ~ Weight_A+group_ , data=data5)


廣義線性模型,變量篩選,交叉驗證

glm


library(car)

states

<- as.data.frame(state.x77[,c("Murder",

"Population",

"Illiteracy",

"Income", "Frost")])

fit

<- lm(Murder ~ Population + Illiteracy + Income + Frost, data=states)

qqPlot(fit,

labels=row.names(states),

simulate=TRUE, main="Q-Q Plot")


vif(fit)

outlierTest(fit)

anova()函數可以比較兩個嵌套模型的擬合優度

stepAIC(fit, direction="backward") MASS包

states

<- as.data.frame(state.x77[,c("Murder",? "Population",

? "Illiteracy", "Income","Frost")])

fit

<- lm(Murder

~ Population + Income + Illiteracy + Frost, data=states)

shrinkage(fit)

shrinkage

<- function(fit, k=10){

require(bootstrap)

theta.fit <- function(x,y){lsfit(x,y)}

theta.predict <- function(fit,x){cbind(1,x)%*%fit$coef}

x

<- fit$model[,2:ncol(fit$model)]

y

<- fit$model[,1]

results

<- crossval(x,

y, theta.fit, theta.predict, ngroup=k)

r2

<- cor(y, fit$fitted.values)^2

r2cv

<- cor(y, results$cv.fit)^2

cat("Original

R-square =", r2, "\n")

cat(k,

"Fold Cross-Validated R-square =", r2cv, "\n")

cat("Change

=", r2-r2cv, "\n")

}

5.模擬試驗 簡單檢驗方法:變量參數改變的影響,bootstrap,置換檢驗



data("women")

names(women)

#bootstrap

#set up the bootstrap

B <- 200? ? ? ? ? ? #number of replicates

n <- nrow(women)? ? ? #sample size

R <- numeric(B)? ? #storage for replicates

#bootstrap estimate of standard error of R

for (b in 1:B) {

? #randomly select the indices

? i <- sample(1:n, size = n, replace = TRUE)

? height <- women$height[i]? ? ? #i is a vector of indices

? weight <- women$weight[i]

? R[b] <- cor(height, weight)

}

#output

print(se.R <- sd(R))

#[1] 0.001321346

hist(R, prob = TRUE)


n <- 20 #樣本量

alpha <- 0.05 #一類錯誤率

mu0 <- 500 #均數

sigma <- 100 #方差

m <- 1000

i=0

j=0

k=0

n1 <- c(20,50,100)

alpha1 <- c(0.05,0.10,0.20)

q <- numeric(m)

for (i in n1){

? for (j in alpha1) {

? ? for (k in 1:m) {

? ? ? x <- rnorm(i, mu0, sigma)

? ? ? ttest <- t.test(x, alternative = "greater", mu = mu0)

? ? ? q[k] <- ifelse(ttest$p.value > 0.05,0,1)

? ? }? ? ?

? ? print(paste(c(i,j,sum(q))))

? }

}

results

<- boot(data=mtcars, statistic=rsq,

?????????????? R=1000, formula=mpg~wt+disp)


library(coin)

score

<- c(40, 57, 45, 55, 58, 57, 64, 55, 62, 65)

treatment

<- factor(c(rep("A",5), rep("B",5)))

mydata <- data.frame(treatment, score)

t.test(score~treatment, data=mydata, var.equal=TRUE)


6.function寫法 輸出描述性變量 學會paste()

paste0(c(M,p25,p75),sep=c("(","-",")"),collapse = "")

R數據管理高級版

apply(mydata, 1, mean)? #行均值

apply(mydata, 2,mean)? #列均值

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,030評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,310評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,951評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,796評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,566評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,055評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,142評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,303評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,799評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,683評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,899評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,409評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,135評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,520評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,757評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,528評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,844評論 2 372

推薦閱讀更多精彩內容