Needs["RLink`"] (* For Mac and MMA 10*) SetEnvironment[ "DYLD_LIBRARY_PATH" ->"/Library/Frameworks/R.framework/Resources/lib"] InstallR["RHomeLocation" -> "/Library/Frameworks/R.framework/Resources", "RVersion" -> 3]; REvaluate["R.version.string"] (* Load packages*) REvaluate["library(psych);"] REvaluate["library(nortest);"] REvaluate["library(GenABEL);"] (* 因素分析,主成分法萃取,變異及大化法轉軸 *) myfac=Map[REvaluate["{xx<-principal(iris[,1:4],nfactors="<>ToString[#]<>", rotate=\"varimax\");xx$loadings}"]&,{2,3,4}]; myfac (* 輸出因素負荷矩陣 *) Reverse[SortBy[myfac[[1,1]],{#[[1]],#[[2]]}&]]//TableForm TableForm/@myfac[[All,1]] (* 因素分析資料*) fadata = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 4, 5, 6}, {1, 2, 1, 1, 1, 1, 2, 1, 2, 1, 3, 4, 3, 3, 3, 4, 6, 5}, {3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 4, 6}, {3, 3, 4, 3, 3, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 5, 6, 4}, {1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 6, 4, 5}, {1, 1, 1, 2, 1, 3, 3, 3, 4, 3, 1, 1, 1, 2, 1, 6, 5, 4}}; (* 定義資料*) RSet["factor", Transpose@fadata]; (* 在R中計算相關係數矩陣,傳回MMA小數後四捨五入 *) Round[REvaluate["cor(factor)"], 0.0001] // MatrixForm (* 因素分析 *) REvaluate["factanal(factor, factors = 3)$loadings"] (* 輸出因素負荷矩陣 *) TableForm[#[[1]], TableHeadings -> {None, #[[-1, -1, -1, -1]]}] & /@ {REvaluate["factanal(factor, factors = 3)$loadings"]} // Column (* 迴歸分析 *) REvaluate["{ data(iris) reg <- lm( Sepal.Length ~ Species, data=iris ) summary.text <- capture.output(print( summary(reg)) ) }"] StringJoin@Riffle[#, "\n"] &@REvaluate["{ data(iris) reg <- lm( Sepal.Length ~ Species, data=iris ) summary.text <- capture.output(print( summary(reg)) ) }"] (* 產生常態隨機變數 *) mydata=REvaluate["rnorm(100,mean=0,sd=1)"]&/@Range[100]; (* MMA次數分配 *) \[ScriptCapitalD] = HistogramDistribution[mydata[[1]]] (* MMA PDF & CDF *) GraphicsRow[DiscretePlot[#[\[ScriptCapitalD], x], {x, -4, 4, .01}, PlotLabel -> #] & /@ {PDF, CDF}] (* shapiro test, ks.test *) shapiro[data_] := Block[{temp}, RSet["temp", data]; REvaluate[ "{xx=shapiro.test(temp); yy=ks.test(temp,\"pnorm\",0,1); zz=lillie.test(temp); c(xx$statistic,xx$p.value,yy$statistic,yy$p.value,zz$statistic,zz$p.value)}"][[1]] ] RSet["rn1", RandomReal[{0, 10}, 1000]]; rn2 = RandomReal[NormalDistribution[0, 1], 1000]; REvaluate["rntransform(rn1)"] // Short Histogram[#, Frame -> True] & /@ {rn2, REvaluate["rntransform(rn1)"]} ShapiroWilkTest[#, {"TestStatistic", "PValue"}] & /@ {rn2, REvaluate["rntransform(rn1)"]} (* 利用RCurl擷取網路資料 *) gosspost[n_]:=REvaluate[" {library(RCurl); curl<-getCurlHandle(); curlSetOpt(cookie=\"over18=1\",followlocation=TRUE,curl=curl); url<-\"https://www.ptt.cc/bbs/Gossiping/index" <> ToString[n] <> ".html\"; html<-getURL(url,curl=curl) }"][[1]]; Gossiping = Cases[ImportString[ StringReplace[gosspost[#], {"\n" -> "", "\t" -> ""}], "XMLObject"], XMLElement[ "div", {"class" -> "r-ent"}, {XMLElement[ "div", {"class" -> "nrec"}, {XMLElement[ "span", {"class" -> "hl f2"}, {_}]}], XMLElement["div", {"class" -> "mark"}, {}], XMLElement[ "div", {"class" -> "title"}, {XMLElement[ "a", {"shape" -> "rect", "href" -> postlink_}, {posttile_}]}], XMLElement[ "div", {"class" -> "meta"}, {XMLElement[ "div", {"class" -> "date"}, {_}], XMLElement[ "div", {"class" -> "author"}, {author_}]}]}] :> {postlink, posttile, author}, Infinity] & /@ Range[20861, 20862, 1]; Flatten[Gossiping, 1] // TableForm
Use R within Mathematica
由 戴忠淵 於 2017年6月22日星期四
下午10:22 發表
讀者回應 ( 0 意見 )
訂閱發佈留言 (Atom)
發佈留言
Please leave your name and tell me what you thought about this site. Comments, suggestions and views are welcomed.
如果這篇文章對你有幫助,那請留個訊息給我~