請教大神,R語言做logistic回歸的結果OR
自變量通過不檢驗有以下這些可能:
1、方程本身沒有意義,比如我們用身高來預測性別,這個肯定通不過檢驗。2、自變量本省有問題,二項邏輯回歸對自變量的要求比較嚴,一般是要求連續、正態分布的數據才可以。如果自變量不滿足符合的條件則很有可能通不過檢驗。
解決的方式:
1、首先將你的自變量轉化為Z分數,這樣可以從一定程度上改善數據的分布。針對情況1、你先用點二列相關檢驗一下看看各個轉化后自變量和因變量之間是不是存在相關關系,如果不相關的話后面的步驟就免了。
2、如果兩者存在相關再重新用二項邏輯回歸進行擬合,如果通過檢驗則萬事大吉,如果還是不行則往下看。
3、如果不能通過檢驗則說明通過轉化為Z分數起到的效果有限,這個時候可以用Multinomnal logistic,這個在SPSS15以上的版本有,對自變量要求不是很嚴,可以是等級變量和分類變量。
R語言 |
|——它被稱為元素邏輯或運算符。
它將第一向量的每個元素與第二向量的相應元素組合,并且如果元素為真,則給出輸出TRUE。 !——它被稱為邏輯非運算符。
取得向量的每個元素,并給出相反的邏輯值。 ||——稱為邏輯OR運算符。
取兩個向量的第一個元素,如果其中一個為TRUE,則給出TRUE。 舉例如下: v <- c(3,0,TRUE,2+2i); t <- c(4,0,FALSE,2+3i); print(v|t); [1] TRUE FALSE TRUE TRUE print(!v); [1] FALSE TRUE FALSE FALSE print(v||t); [1] FALSE。
R語言里的一個語句不明白啥意思
在quantmod包里面;
getSymbols(Symbols = NULL,
env = *(),
*s = FALSE,
verbose = FALSE,
warnings = TRUE,
src = "yahoo",
* = TRUE,
* = getOption('*',TRUE),
。)
*=F表示不自動賦值;需要手動指定變量去存儲數據。否則就是自動賦值給Symbols變量。
R 語言 for循環
首先有個概念,循環中的變量是i,每次循環之后都會更新i的值,直到循環結束。循環中i的取值范圍在1:5。
循環中,每次循環都打印出i的結果。
循環結束后,i不再更新,打印i輸出的就是i最后一次的取值,并且一直都是這個值,除非你再次給i賦值。
第二個問題,我不知到是不是這個意思,你需要保存每一步循環中得到的結果,最后在循環結束之后全部把它們輸出出來。
我就按我理解的這個意思寫一下。
tfor(i in 1:5) t[i]a
希望對你有幫助。
如何在R語言中使用SQL語句
R中還有一個有趣的sqldf包,它可以讓你用SQL來操作dataframe,這種功能能讓會R的人能練習SQL,會SQL的人能練習R,不得不感嘆R語言的強大技能和神奇魅力。
當然也可以將R與外部數據庫連接,直接在R中操作數據庫,并生成最終結果,這也是一種可行的方法。在R中連接數據庫需要安裝其它的擴展包,根據連接方式不同我們有兩種選擇:一種是ODBC方式,需要安裝RODBC包并安裝ODBC驅動。
另一種是DBI方式,可以根據已經安裝的數據庫類型來安裝相應的驅動。因為后者保留了各數據庫原本的特性,所以個人比較偏好用DBI連接方式。
有下面這幾種主要的包提供了DBI連接:RMySQL,RSQLite,ROracle,RPostgreSQL。由名字看得出它們分別對應了幾種主流的數據庫。
注:以上文字來自R-blogger—–《在R語言中使用SQL》 值得一提的是在運用sqldf包時可能要對R軟件升級到3.1.0版以上,否則安裝不會成功,這里簡單介紹一種在Windows環境下對R軟件自動升級的方法。 Windows上升級R語言: *es("installr"); library(installr) #加載包 updateR() 之后選擇“確定”就可以自動更新了 雖然在R語言中有很多優秀的函數如aggregate()和daply()可以對數據框統計,但sql功能強大,不僅能實現數據的清洗、統計、運算,還可以實現數據存儲、控制、定義和調用。
越來越多的公司在招聘的時候都要求數據分析師除了要掌握統計建模和數據挖掘的理論方法和編程能力外,還要求其具備使用sql的能力,樓主也在積極學習sql當中。 下面是我利用sqldf()完成的一些程序,雖然簡單,但這是學習的第一步 > name<-c(rep('張三',1,3),rep('李四',3)) > subject<-c('數學','語文','英語','數學','語文','英語') > score<-c(89,80,70,90,70,80) > stuid<-c(1,1,1,2,2,2) > stuscore<-*(name,subject,score,stuid) > library(sqldf) 1.計算每個人的總成績并排名(要求顯示字段:姓名,總成績) > sqldf('select name,sum(score) as allscore from stuscore group by name order by allscore') name allscore 1 張三 239 2 李四 240 2.計算每個人的總成績并排名(要求顯示字段: 學號,姓名,總成績) > sqldf('select name,stuid,sum(score) as allscore from stuscore group by name order by allscore') name stuid allscore 1 張三 1 239 2 李四 2 240 3.計算每個人單科的最高成績(要求顯示字段: 學號,姓名,課程,最高成績) > sqldf('select stuid,name,subject, max(score) as maxscore from stuscore group by stuid') stuid name subject maxscore 1 1 張三 數學 89 2 2 李四 數學 90 4.計算每個人的平均成績(要求顯示字段: 學號,姓名,平均成績) > sqldf('select stuid,name,subject, avg(score) as avgscore from stuscore group by stuid') stuid name subject avgscore 1 1 張三 英語 79.66667 2 2 李四 英語 80.00000 5.列出各門課程成績最好的學生(要求顯示字段: 學號,姓名,科目,成績) > sqldf('select stuid,name,subject,max(score) as maxscore from stuscore group by subject order by stuid') stuid name subject maxscore 1 1 張三 語文 80 2 2 李四 數學 90 3 2 李四 英語 80 8.列出各門課程的平均成績(要求顯示字段:課程,平均成績) > sqldf('select subject,avg(score) as avgscore from stuscore group by subject') subject avgscore 1 數學 89.5 2 英語 75.0 3 語文 75.0。