日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

R语言实战(第二版)第七章-基本统计分析

發(fā)布時(shí)間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 R语言实战(第二版)第七章-基本统计分析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Peaches’Notepad

綜合各路大神,講了三遍可是把自己講會(huì)了

代碼們 開(kāi)整


?

#7.1 描述性統(tǒng)計(jì)分析 #示例 myvars<-c("mpg","hp","wt")#生成向量 head(mtcars[myvars])#查看 dt<-mtcars[myvars]#賦值給dt#7.1.1方法云集 #基礎(chǔ)安裝 summary(dt) #圖基五數(shù)總括 # 即最小值、下四分位數(shù)、中位數(shù)、上四分位數(shù)和最大值)針對(duì)其中一個(gè)變量 fivenum(dt$hp)#apply(x,margin,FUN,...)將一個(gè)任意函數(shù)“應(yīng)用”到矩陣、數(shù)組、數(shù)據(jù)框的任何維度上 apply(dt,2,mean)#sapply(x,FUN)#自定義一個(gè)函數(shù): mystats<-function(x,na.omit=FALSE){if(na.omit)#如果忽略nax<-x[!is.na(x)]#判斷 如果x是非缺失值,去掉了na m<-mean(x) n<-length(x) s<-sd(x) skew<-sum((x-m)^3/s^3)/n #偏度 kurt<-sum((x-m)^4/s^4)/n-3 #峰值 return(c(n=n,mean=m,stdev=s,skew=skew,kurtosis=kurt))} #計(jì)算完返回sapply(dt, mystats)#7.1.2 更多方法install.packages("Hmisc") #Hmisc::describe(dt) library(Hmisc) describe(dt)install.packages("pastecs") # stat.desc(x, basic = TRUE, desc = TRUE, norm = FALSE, p = 0.95) library(pastecs) stat.desc(dt,norm = TRUE)install.packages("psych") library(psych) describe(dt)#7.1.3 分組計(jì)算描述性統(tǒng)計(jì)量 #如果使用的是list(mtcars$am),則am列將被標(biāo)注為 Group.1而不是am. aggregate(dt,by=list(mtcars$am),sd) aggregate(dt,by=list(am=mtcars$am),sd) #如果有多個(gè)分組變量,可以使用by=list(name1=groupvar1, name2=... aggregate(dt,by=list(am=mtcars$am,cyl=mtcars$cyl),mean)#aggregate只能使用單返回值函數(shù) #使用by()分組計(jì)算描述性統(tǒng)計(jì)量 自定義函數(shù)dstats<-function(x)sapply(x,mystats) by(dt,mtcars$am,dstats)#7.1.4分組計(jì)算的擴(kuò)展 #1)doBy install.packages("doBy") library(doBy) summaryBy(mpg+hp+wt~mtcars$am,data=mtcars,FUN = mystats)#2)psych install.packages("psych") library(psych) describeBy(dt,list(am=mtcars$am))#與describe相同的統(tǒng)計(jì)量,不允許指定函數(shù)#3)reshape install.packages("reshape") library(reshape) dstats<-function(x)(c(n=length(x),mean=mean(x),sd=sd(x))) #融合:dfm <- melt(dataframe, measure.vars = y, id.vars = g) #y:數(shù)值型變量(默認(rèn)使用所有變量),g:一個(gè)或多個(gè)分組變量組成的向量#重鑄:cast(dfm, groupvar1, groupvar2 + ... + variable - ., FUN) #variable只取其字面含義(即僅表示重鑄后數(shù)據(jù)框中的變量variable) dfm<-melt(mtcars,measure.vasrs=c("mpg","hp","wt"),id.vars=c("am","cyl")) cast(dfm,am+cyl+variable~.,dstats)#7.2頻數(shù)表和列聯(lián)表 library(vcd) head(Arthritis)#7.2.1 生成頻數(shù)表 #1)一維列聯(lián)表 #table()函數(shù) mytable1<-with(Arthritis,table(Improved)) mytable1 #prop()函數(shù)---轉(zhuǎn)化為比例值 prop.table(mytable1) prop.table(mytable1)*100#2)二維列聯(lián)表 #table(A,B)函數(shù) mytable2<-table(Treatment=Arthritis$Treatment,Improved=Arthritis$Improved) mytable2#xtabs(~A+B,data=mydata)函數(shù) mytable2<-xtabs(~Treatment+Improved,data=Arthritis) mytable2#margin.table() margin.table(mytable2,1)#對(duì)行進(jìn)行操作 margin.table(mytable2,2)#prop.table() prop.table(mytable2,1) prop.table(mytable2,2)##各單元格所占比例 prop.table(mytable2)#概述邊margins,為表格添加邊際和 addmargins(mytable2)#(默認(rèn)是為表中所有變量創(chuàng)建邊際和) addmargins(prop.table(mytable2))addmargins(prop.table(mytable2,1),2) addmargins(prop.table(mytable2,2),1)#3)gmodels-CrossTable #install.packages("gmodels") library(gmodels) CrossTable(Arthritis$Treatment,Arthritis$Improved) #3)多維列聯(lián)表 mytable3<-xtabs(~Treatment+Sex+Improved,data=Arthritis) mytable3#ftable()函數(shù)可以以一種緊湊而吸引人的方式輸出多維列聯(lián)表 ftable(mytable3) #邊際頻數(shù) margin.table(mytable3,1) margin.table(mytable3,2) margin.table(mytable3,3)margin.table(mytable3,c(1,3))##治療情況x改善情況的分組邊際頻數(shù)#治療情況x性別的各類(lèi)改善情況的比例,比例將被添加在不在prop.table調(diào)用的下標(biāo)上 ftable(prop.table(mytable3,c(1,2))) #治療情況x性別的各類(lèi)改善情況的邊際和 ##將被添加在不在prop.table調(diào)用的下標(biāo)上 ftable(addmargins(prop.table(mytable3,c(1,2)),3)) ftable(addmargins(prop.table(mytable3,c(1,2)),3))*100#7.2.2獨(dú)立性檢驗(yàn): #1、卡方獨(dú)立性檢驗(yàn) #對(duì)數(shù)據(jù)框中的兩列進(jìn)行檢驗(yàn),是否獨(dú)立 ##原假設(shè) 相互獨(dú)立#治療情況與改善情況 mytable2<-xtabs(~Treatment+Improved,data=Arthritis) chisq.test(mytable2) #治療情況和改善情況不獨(dú)立#性別與改善情況 mytable3<-xtabs(~Improved+Sex,data=Arthritis) mytable3 chisq.test(mytable3) #性別和改善情況獨(dú)立 #warning出現(xiàn),因?yàn)楸碇袉卧裰挥幸粋€(gè)小于5的值,可能會(huì)導(dǎo)致卡方近似無(wú)效#Fisher精確檢驗(yàn) ##不能用于2x2列聯(lián)表 mytable2<-xtabs(~Treatment+Improved,data=Arthritis) fisher.test(mytable2)#Cochran-Mantel-Haenszel檢驗(yàn) #檢驗(yàn)治療情況和改善情況在性別的每一水平下是否獨(dú)立(原假設(shè)獨(dú)立)mytable4<-xtabs(~Treatment+Improved+Sex,data=Arthritis) mantelhaen.test(mytable4)#7.2.3相關(guān)性的度量library(vcd) assocstats(mytable2)#7.3 相關(guān)#7.3.1 相關(guān)的類(lèi)型# cor(x,use=,method= ) states<-state.x77[,1:6] cor(states)#默認(rèn)的method是pearson cor(states,method="spearman")cov(states)#有目的地針對(duì)某兩組變量之間的關(guān)系進(jìn)行研究 #非方形的相關(guān)矩陣 x <- states[,c("Population", "Income", "Illiteracy", "HS Grad")] y <- states[,c("Life Exp", "Murder")] cor(x,y)#偏相關(guān):在控制一個(gè)變量時(shí),另兩個(gè)變量的相關(guān)性。 install.packages("ggm") library(ggm) colnames(states) pcor(c(1,5,2,3,6),cov(states))#7.3.2 相關(guān)性的顯著性檢驗(yàn) #cor.test(x,y,alternative=less/greater/two side,method= )cor.test(states[,3],states[,5])#檢驗(yàn)相關(guān)矩陣下的所有相關(guān)系數(shù):corr.test() library(psych) corr.test(states,use="complete") #若需要顯示相關(guān)系數(shù)95%CI,以print()函數(shù)打印該檢驗(yàn)結(jié)果并聲明參數(shù)short=FALSE print(corr.test(states,method = "pearson"),short = FALSE)#偏相關(guān)系數(shù)的顯著性檢驗(yàn) library(ggm) #pcor.test(pcor()輸出結(jié)果,q=控制變量序號(hào),n=觀測(cè)記錄數(shù)) pcor.test(r=pcor(c(1,5,2,3,6),cov(states)) ,q=c(2,3,6),n=nrow(states))#7.4 t檢驗(yàn) #7.4.1 獨(dú)立樣本t檢驗(yàn) #t.test(y~x,data) OR t.test(y1,y2) library(MASS) dt2<-UScrime t.test(Prob~So,data=dt2)#7.4.2 非獨(dú)立樣本的t檢驗(yàn) library(MASS) sapply(dt2[c("U1","U2")], function(x)(c(mean=mean(x),sd=sd(x)))) #配對(duì)t檢驗(yàn)with(dt2,t.test(U1,U2,paired=TRUE))#7.5組間差異的非參數(shù)檢驗(yàn) #7.5.1 兩組的比較 with(dt2, by(Prob, So, median)) #相互獨(dú)立 wilcox.test(Prob~So,data=dt2) #不相互獨(dú)立 with(dt2, wilcox.test(U1, U2, paired = TRUE))#7.5.2多于兩組的比較 #各組獨(dú)立 dts<-data.frame(state.region,state.x77) kruskal.test(Illiteracy~state.region,data = dts) #四個(gè)地區(qū)的文盲率各不相同#各組不獨(dú)立 dt3<-matrix(1:20,nrow = 4,ncol = 5) dt3 friedman.test(dt3)#作者拓展 source("http://www.statmethods.net/RiA/wmc.txt") states <- data.frame(state.region, state.x77) wmc(Illiteracy ~ state.region, data=states, method="holm")

總結(jié)

以上是生活随笔為你收集整理的R语言实战(第二版)第七章-基本统计分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。